帮忙差错:“全排列”而已

LeonTown 2009-07-17 06:09:54
小弟不才,
如下代码,没能列举出所有排列。
请问错在哪里?

void SwapChar(char* p, unsigned int i, unsigned int j)
{
char t = p[i];
p[i] = p[j];
p[j] = t;
}

void Perm(char* p, unsigned int uStart, unsigned int uNum)
{
if(uStart == uNum-1)
{
printf("%s\n", p);
}
else
{
for(unsigned int i=uStart; i<uNum; i++)
{
SwapChar(p, uStart, i);
Perm(p, i+1, uNum);
SwapChar(p, uStart, i);
}
}
}

int _tmain(int argc, _TCHAR* argv[])
{
char charBuf[5] = "abcd";
Perm(charBuf, 0, 4);
return 0;
}
...全文
92 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
abcdef0966 2009-07-17
  • 打赏
  • 举报
回复
Perm(p, i+1, uNum);

这一句改为Perm(p, uStart+1, uNum);
fallening 2009-07-17
  • 打赏
  • 举报
回复
没有看明白,我给出一个使用库函数的全排列:

char p[N];

sort(p, p+N);

do
{
copy( p, p+N, ostream_iterator<char>(cout, ' ' ) );
cout << "\n";
}
while(next_permutation(p, p+N) );
LeonTown 2009-07-17
  • 打赏
  • 举报
回复
大家都去过周末了吗~

33,028

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧