下面程序的功能是利用递归方法生成从1到n(n<10) 的n个数的全部可能的排列(不一定按升序输出)。例如,输入3,则应该输出(每行输出5个排列):
123 132 213 231 321
312
#include <iostream> #include <iomanip> using namespace std; 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)_______; } } int main() { int i; cin >>n; for(i=1;i<=n;i++) a[i]=i; ______(5)______; }