#include <iostream>#include <set>using namespace std;int A[1000], P[1000];void PRint_permutation(int n, int * P, int * A, int cur){ if(n == cur){ //边界 for(int i = 0; i < n; i++){ cout<<A[i]; } cout<<endl; } else { for(int i = 0; i < n; i++){ int c1 = 0, c2 = 0; //c1记录A中有P[i]几个, c2记录P中有P[i]几个 for(int j = 0; j < cur; j++) if(A[j] == P[i]) c1++; for(int j = 0; j < n; j++) if(P[j] == P[i]) c2++; if(c1 < c2){ //如果P中有的P[i]比A中的多,就执行插入语句 A[cur] = P[i]; print_permutation(n, P, A, cur + 1); } } }}int main(){ int n; cin>>n; for(int i = 0; i < n; i++){ cin>>P[i]; } print_permutation(n, P, A, 0); //测试}
新闻热点
疑难解答