C语言列问题 从键盘输入一个整数n,请输入1,2,……,n的所有排列如n=3,则输出为1 2 3 1 3 2 213 231 31 2 3 1 3 2 2 1 3 2 3 1 3 1 2
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/17 09:49:41
C语言列问题 从键盘输入一个整数n,请输入1,2,……,n的所有排列如n=3,则输出为1 2 3 1 3 2 213 231 31 2 3 1 3 2 2 1 3 2 3 1 3 1 2
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
C语言列问题 从键盘输入一个整数n,请输入1,2,……,n的所有排列如n=3,则输出为1 2 3 1 3 2 213 231 31 2 3 1 3 2 2 1 3 2 3 1 3 1 2
#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