#include <iostream> using namespace std; void print_permutation(int n,int * A,int cur) { int i,j; if(cur == n) //递归边界 { for(i = 0; i < n; ++i) cout << A[i] << ' '; cout << endl; } else for(int i = 1; i <= n; ++i) //尝试在A[cur]中填各种整数i { int ok = 1; for(j = 0; j < cur ; ++j) if(A[j] == i) ok = 0; if(ok) { A[cur] = i; print_permutation(n,A,cur+1); } } } int main() { int A[10],n; while(cin >> n) print_permutation(n,A,0); return 0; }
输入整数n,按字典序输出前n个数的所有排列。自己打一遍,果然就可以理解了。。