码迷,mamicode.com
首页 > 其他好文 > 详细

『模板』 子集生成

时间:2018-02-27 23:46:16      阅读:223      评论:0      收藏:0      [点我收藏+]

标签:class   return   向量   cout   include   ret   under   []   com   

两种方法:

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 }

 

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

先献上图片技术分享图片

 

『模板』 子集生成

标签:class   return   向量   cout   include   ret   under   []   com   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!