#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中的多,就執(zhí)行插入語句 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); //測試}
新聞熱點
疑難解答