// 40、用1、2、2、3、4、5这六个数字,写一个main函数,打印出所有不同的排列, // 如:512234、412345等,要求:"4"不能在第三位,"3"与"5"不能相连. void permutation(int a[],int i,int n,int pre)// 我们保留前一个位置的值 { if(i==n-1) { // 验证是否合格 for(int k=0;k<n;k++) { if(k==2&&a[k]==4) { cout<<"error"<<endl; system("pause"); } if(k+1<n&&(a[k]==3&&a[k+1]==5||a[k]==5&&a[k+1]==3)) { cout<<"error"<<endl; system("Pause"); } } for(int k=0;k<n;k++) { cout<<setw(5)<<a[k]; } cout<<endl; // 输出 return; } for(int j=i;j<n;j++) { swap(a[i],a[j]); if(i==2&&a[i]==4) { swap(a[i],a[j]); continue; } if(a[i]==3) { if(i+1<n&&a[i+1]==5||pre==5) { swap(a[i],a[j]); continue; } } if(a[i]==5) { if(i+1<n&&a[i+1]==3||pre==3) { swap(a[i],a[j]); continue; } } permutation(a,i+1,n,a[i]); swap(a[i],a[j]); } }