首页 > 学院 > 开发设计 > 正文

生成可重集的序列

2019-11-08 02:54:17
字体:
来源:转载
供稿:网友

#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);                  //测试}


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表