首页 > 其他 > 详细

『模板』 子集生成

时间:2018-02-27 22:01:12      阅读:252      评论:0      收藏:0      [点我收藏+]

两种方法:

1.增量构造法

2.位向量法

(ps:懒得分开写就写一起了)

 

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int zh[1001];//用于法一
 4 bool xl[1001];//用于法二
 5 void print(int s[],int n){
 6     for(int i=0;i<n;i++)  //用于法二
 7     if(xl[i]) cout<<s[i]<< ;
 8     cout<<endl;
 9 }
10 void ps1(int s[],int n,int pos=0){
11     for(int i=0;i<pos;i++){        //法一
12         cout<<zh[i]<<" ";
13     }
14     cout<<endl;
15     int m=pos ? zh[pos-1]:0;
16     for(int i=0;i<n;i++){
17         if(s[i]>m){
18             zh[pos]=s[i];
19             ps1(s,n,pos+1);
20         }
21     }
22 }
23 void ps2(int s[],int n,int pos=0){
24     if(pos==n){
25         print(s,n);//法二
26         return 0;
27     }
28     xl[pos]=1;
29     ps2(s,n,pos+1);
30     xl[pos]0;
31     ps2(s,n,pos+1);
32 }
33 int main(){
34     int d[30000];
35     int n,r;
36     cin>>n>>r;
37     for(int i=0;i<n;i++){
38         d[i]=i+1;
39     }
40     ps1(d,n);
41     ps2(d,n);
42     return 0;
43 }

 

还有一种二进制法由于我不会某些原因以后懒得补上

先献上图片技术分享图片

 

『模板』 子集生成

原文:https://www.cnblogs.com/luv-letters/p/8480862.html

(1)
(4)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!