1 solutions
-
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
Information
- ID
- 17282
- Time
- 1000ms
- Memory
- 2MiB
- Difficulty
- (None)
- Tags
- # Submissions
- 0
- Accepted
- 0
- Uploaded By