zoukankan      html  css  js  c++  java
  • 『模板』 子集生成

    两种方法:

    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 }

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

    先献上图片

  • 相关阅读:
    第10组 Beta冲刺 (3/5)
    第10组 Beta冲刺 (2/5)
    第10组 Beta冲刺 (1/5)
    软工实践个人总结
    第03组 每周小结(3/3)
    第03组 每周小结(2/3)
    第03组 每周小结(1/3)
    第03组 Beta冲刺 总结
    第03组 Beta冲刺 (5/5)
    第03组 Beta冲刺 (4/5)
  • 原文地址:https://www.cnblogs.com/luv-letters/p/8480862.html
Copyright © 2011-2022 走看看