没有输入,按照字典序输出所有 1 2 3 4 5 的全排列。
希望不要用递归,递归不会啊!
#include <stdio.h>
const int N = 5;
int h[6];
int main() {
int i, j, k, l, m;
for(i = 1; i <= N; ++i) {
h[i] = 1; // (1)
for(j = 1; j <= N; ++j) {
if(h[j]) continue; // (2)
h[j] = 1;
for(k = 1; k <= N; ++k) {
if(h[k]) continue; // (3)
h[k] = 1;
for(l = 1; l <= N; ++l) {
if(h[l]) continue; // (4)
h[l] = 1;
for(m = 1; m <= N; ++m) {
if(h[m]) continue; // (5)
printf("%d%d%d%d%d\n", i, j, k, l, m);
}
h[l] = 0; // (6)
}
h[k] = 0; // (7)
}
h[j] = 0; // (8)
}
h[i] = 0; // (9)
}
return 0;
}