全部可能的排列(不一定按升序输出)。例如,当n=3,k=2时,应该输出(每行输出5个排列):
12 13 21 23 32
31
程序:
#include <iostream.h> #include <iomanip.h> int n, k, a[10]; long count = 0; void perm2(int j) { int i, p, t; if ( 1 ) { for (i = k; i <= n; i++) { count++; t = a[k]; a[k] = a[i]; a[i] = t; for ( 2 ) cout << setw(1) << a[p]; cout << " "; t = a[k]; a[k] = a[i]; a[i] = t; if (count % 5 == 0) cout << endl; } return; } for (i = j; i <= n; i++) { t = a[j]; a[j] = a[i]; a[i] = t; 3; t = a[j]; 4; } } void main( ) { int i; cout << "nEntry n,k (k<=n)n" << endl; cin >> n >> k; for (i = 1; i <= n; i++) a[i] = i; 5; cout << endl; }