注册 登录
编程论坛 C++教室

排列问题的实现错误

diaoxue 发布于 2007-10-22 23:42, 474 次点击

#include<iostream.h>
void Swap(int & a,int & b);
void Perm(int list[],int k,int m);
int main()
{
int list[10]={1,5,4,8,2,36,14,27,7,41};
int k=0;
int m=9;
Perm(list,k,m);
return 0;
}
inline void Swap(int &a,int &b)
{
int temp=a;
a=b;
b=temp;
}
void Perm(int list[],int k,int m)
{
int j;
if(k==m)
{
for(int i=0;i<=m;i++)
cout<<list[i];
cout<<endl;
}
else
for(int i=k;i<=m;i++)
{
Swap(list[k],list[j]);
Perm(list,k+1,m);
Swap(list[k],list[i]);
}
}
怎么一运行就出错呢 ,编译、连接没错

6 回复
#2
eagleboycn2007-10-23 07:48
以下是引用diaoxue在2007-10-22 23:42:44的发言:

。。。。。
else
for(int i=k;i<=m;i++)
{
Swap(list[k],list[j]);
Perm(list,k+1,m);
Swap(list[k],list[i]);
}

这一段似乎不对

#3
nuciewth2007-10-23 12:54
狂晕,把i 写成j 了.
仔细点啦.
#4
六道2007-10-23 13:53
无限循环了~
#5
diaoxue2007-10-23 15:57

谢谢大家
改了后一直运行啊

#6
nuciewth2007-10-23 18:43

因为你的数太多了,所以运行的比较长时间.
你把数改小点看下.
#7
diaoxue2007-10-23 21:24
搞定
多谢大家
非常感谢爱龙的那BZ
1