全部可能的排列(不一定按升序输出)。例如,当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;
} 
