1 条题解
-
0
C :
#include <stdio.h> #include <stdlib.h> #define N 10 void perm(int*,int,int); int main() { int num[N+1],i,n; scanf("%d",&n); for(i = 1; i <= n; i++) num[i] = i; perm(num,1,n); return 0; } void perm(int* num,int i,int n) { int j, k, tmp; if(i < n) { for(j = i; j <= n; j++) { tmp = num[j]; // 旋转该区段最右边数字至最左边 for(k = j; k > i; k--) num[k] = num[k-1]; num[i] = tmp; perm(num,i+1,n); // 还原 for(k = i; k < j; k++) num[k] = num[k+1]; num[j] = tmp; } } else { // 显示此次排列 for(j = 1; j <= n; j++) printf("%d", num[j]); printf("\n"); } }
- 1
信息
- ID
- 409
- 时间
- 1000ms
- 内存
- 2MiB
- 难度
- 10
- 标签
- 递交数
- 2
- 已通过
- 0
- 上传者