C语言列问题 从键盘输入一个整数n,请输入1,2,……,n的所有排列

问题描述:

C语言列问题 从键盘输入一个整数n,请输入1,2,……,n的所有排列
如n=3,则输出为1 2 3 1 3 2 213 231 3
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
1个回答 分类:综合 2014-10-05

问题解答:

我来补答
#include
void perm(int* data, int n, int curr)
{
if (curr==n-1)
{
for (int i = 0; i < n; ++i)
printf("%d", data[i]);
printf("\n");
}
else
{
for (int i = curr; i < n; ++i)
{
int t;
t = data[curr], data[curr] = data[i], data[i] = t;
perm(data, n, curr+1);
t = data[curr], data[curr] = data[i], data[i] = t;
}
}
}
int main()
{
int array[128] = {0};
int n = 0, i = 0;

scanf("%d", &n);/*没有数据合法性检查*/
for (i = 0; i < n; ++i) array[i] = i+1;
perm(array, n, 0);
return 0;
}
4
1234
1243
1324
1342
1432
1423
2134
2143
2314
2341
2431
2413
3214
3241
3124
3142
3412
3421
4231
4213
4321
4312
4132
4123
Press any key to continue
 
 
展开全文阅读
剩余:2000
上一页:质点位移问题