麻烦看一下这个简单的编程问题

来源:百度知道 编辑:UC知道 时间:2024/06/30 05:45:13
把1到8的所有排列组合情况输出到一个2维数组中。应该怎么做?说一下思路也可以。
八个数字是没有重复的。有没有不用写8个循环的方法?

这还简单?
9重循环!!
int a,b,c,d,e,f,g,h,i;
....
for(a=1,a<=8;a++)
for(b=1,b<=8;b++)
for(c=1,c<=8;c++)
for(d=1,d<=8;d++)
for(e=1,e<=8;e++)
for(f=1,f<=8;f++)
for(g=1,g<=8;g++)
for(h=1,h<=8;h++)
for(i=1,i<=8;i++)
{
......./*不想写了*/
}

理论上讲.2维数组是一行一行来写的,也就是说.规定一个列数(随便是几),然后从第1个数开始输入,直到最后一个
long int i;
int a,b,c,d,e,f,g,h;
for(i=1;i<=87654321;i++)//从一到87654321...
{ a=i%10;b=i%100;
c=i%1000;d=i%10000;e=i%100000;
f=i%1000000;g=i%10000000;
h=i%100000000; //各位十位百位...
a!=b!=c!=...!=0&&a!=b!=c!=...<9;
//排除有相同数的组合且排列的数是从1--8
num[x][y]=i;
} //没调试过.应该可以

用DFS肯定行,书上就有专门介绍排列树的,next_permutation()估计也行,试试吧。