zoukankan      html  css  js  c++  java
  • 子集生成

     1 //2016.8.31
     2 #include <iostream>
     3 #include <cstdio>
     4 
     5 using namespace std;
     6 
     7 void print_subset(int n, int *a, int cur)//增量构造法
     8 {
     9     for(int i = 0; i < cur; i++)cout<<a[i];//打印当前集合,即选出的元素序号
    10     cout<<endl;
    11     int tmp = cur?a[cur-1]+1:0;//确定当前元素的最小可能值
    12     for(int i = tmp; i < n; i++)
    13     {
    14         a[cur] = i;
    15         print_subset(n, a, cur+1);//递归构造子集
    16     }
    17 }
    18 
    19 void print_subset2(int n, int *b, int cur)//位向量法
    20 {
    21     if(cur==n){//打印
    22         for(int i = 0; i < n; i++)
    23               if(b[i])cout<<i;
    24         cout<<endl;
    25         return ;
    26     }
    27     b[cur] = 1;//选择第cur个元素
    28     print_subset2(n, b, cur+1);
    29     b[cur] = 0;//不选择第cur个元素
    30     print_subset2(n, b, cur+1);
    31 }
    32 
    33 void print_subset3(int n)//二进制法,A&B,A|B,A^B分别对应集合A和B的交、并、对称差
    34 {
    35     for(int s = 0; s < (1<<n); s++){
    36         for(int i = 0; i < n; i++)
    37               if(s&(1<<i))cout<<i;
    38         cout<<endl;
    39     }
    40 }
    41 
    42 int main()
    43 {
    44     int a[4], b[4];
    45     print_subset(4, a, 0);
    46     cout<<"--------------------------------------"<<endl;
    47     print_subset2(4, b, 0);
    48     cout<<"--------------------------------------"<<endl;
    49     print_subset3(4);
    50     return 0;
    51 }
  • 相关阅读:
    练习二(米奇老鼠)
    Photoshop笔记一
    HTML笔记1
    用IDEA写出第一个java web
    TCP协议怎么关闭?
    Sql Server2008R2与IDEA的连接
    通过HttpServer向Prometheus暴露端点
    了解Prometheus到底是什么?
    SPI扩展机制在框架中的使用
    motan系列1——与spring的集成原理
  • 原文地址:https://www.cnblogs.com/Penn000/p/5824853.html
Copyright © 2011-2022 走看看