(全排列)下面程序的功能是利用递归方法生成从1到n(n<10)的n个数的全部可能的排列(不一
定按升序输出)。例如,输入3,则应该输出(每行输出5个排列):
123 132 213 231 321
312
程序:
#include <iostream.h> #include <iomanip.h> int n, a[10]; // a[1],a[2],…,a[n]构成n个数的一个排列 long count = 0; // 变量count记录不同排列的个数,这里用于控制换行 void perm(int k) { int j, p, t; if ( 1 ) { count++; for (p = 1; p <= n; p++) cout << setw(1) << a[p]; cout << " "; if ( 2 ) cout << endl; return; } for (j = k; j <= n; j++) { t = a[k]; a[k] = a[j]; a[j] = t; 3; t = a[k]; 4; } } void main(void) { int i; cout << "Entry n:" << endl; cin >> n; for (i = 1; i <= n; i++) a[i] = i; 5; }