用生成法求出1,2,3,...,r的全排列
#include<iostream> #include<cstdio> using namespace std; const int r = 7; int n, i, s, k, j, i1, t, a[r + 1]; void print1() { int ik; for (ik = 1; ik <= r; ++ik) cout << " " << a[ik]; cout << endl; } int main() { for (i = 1; i <= r; ++i) ____(1)______ print1(); s = 1; for (i = 2; i <= r; ++i) s = s * i; s = s - 1; for (i =1; ____(2)______; ++i) { j = r; while (_____(3)_____) j = j - 1; k = j; for (i1 = j + 1; i1 <= r; ++i1) if (_____(4)_______) k = i1; t = a[j - 1]; a[j - 1] = a[k]; a[k] = t; for (i1 = j; i1 <= r - 1; ++i1) for (k = i1 + 1; k <= r; ++k) if (_____(5)______) { t = a[i1]; a[i1] = a[k]; a[k] = t; } print1(); } return 0; }