Josie0625 2019-10-11 17:10 采纳率: 0%
浏览 403
已采纳

c++中字符全排列的程序

编译器是c++ builder最新版

TForm5 *Form5;
char list [9] = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I'};
static int count=0;
void SWAP(char x,char y,char tmp)
{
tmp=x;
x=y;
y=tmp;
}
void perm(char *list, int k, int n)

{   int i,tmp;
    if (k == n-1)

    {   String a = list;

       a = a.SubString(1, n);

       Form5->Memo1->Lines->Add(a+"  ["+IntToStr(count++)+"]");

    }

    else

    {   for (i=k; i<n; i++)

       {  SWAP(list[k], list[i], tmp);

          perm(list, k+1, n);

          SWAP(list[k], list[i], tmp);

       }

    }

}

//---------------------------------------------------------------------------
__fastcall TForm5::TForm5(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm5::Button1Click(TObject *Sender)
{
int k = StrToInt(Edit1->Text);

int n = StrToInt(Edit2->Text);

perm(list, k, n );

}

不知道是哪个地方出了问题 执行出来总是ABCD 这一个顺序
希望有大佬帮忙看一下

  • 写回答

1条回答 默认 最新

  • threenewbee 2019-10-11 17:20
    关注
    void SWAP(char &x,char &y,char tmp)
    {
    tmp=x;
    x=y;
    y=tmp;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 微信小程序协议怎么写
  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看