NOIP2006年第十二届普及组初赛完善程序:(全排列)下面程序的功能是利用递归方法生成从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( ① ) {count++; for(p=1;p<=n;p++) cout <<setw(1)<<a[p]; cout <<" "; if( ② ) cout <<endl; return; } for(j=k;j<=n;j++) {t=a[k];a[k]=a[j];a[j]=t; ③ ; t=a[k]; ④ ; } } void main() {int i; cout <<"Entry n:"<<endl; cin >>n; for(i=1;i<=n;i++) a[i]=i; ⑤ ; }