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

    输入n

    输出1到n这个集合中包含的所有子集

    /*
    //方法一:
    //思路:构造一个位向量visit,而不是直接构造子集A本身
    #include<iostream>
    using namespace std;
    
    void fun(int *visit, int cur, int n)
    {
        if(cur == n+1)
        {
            for(int i = 1;i <= n;++ i)
                if(visit[i])
                    cout << i << ' ';
            cout<<endl;
            return;
        }
        visit[cur] = true;
        fun(visit,cur+1,n);
        visit[cur] = false;
        fun(visit,cur+1,n);
    }
    int main()
    {
        int n;
        cout<<"输入n,产生集合1到n中所有的子集。"<<endl;
        while(cin >> n)
        {
            bool *visit=new bool[n + 1];
            for(int i = 1;i <= n;++ i)
                visit[i] = false;
            fun(a,1,n);
        }
        return 0;
    }
    */
    //方法二:
    //思路:一次选出一个元素放到集合中
    #include<iostream>
    using namespace std;
    
    void print_subset(int *A,int n,int cur)
    {
        for(int i = 0;i < cur;++ i)  //打印当前集合
            cout << A[i] << ' ';
        cout << endl;
        int s = cur ? A[cur - 1] + 1 : 0;
        for(int i = s;i < n; ++ i)
        {
            A[cur] = i;
            print_subset(A,n,cur + 1);
        }
    }
    
    int main()
    {
        int n;
        cout<<"输入n,产生集合1到n中所有的子集。"<<endl;
        while(cin >> n)
        {
            int *A=new int[n + 1];
            for(int i = 1;i <= n;++ i)
                A[i] = i;
            print_subset(A,n,1);
        }
        return 0;
    }
    

      

    功不成,身已退
  • 相关阅读:
    iptables学习笔记_____摘自朱双印个人日志 ____http://www.zsythink.net/
    使用xmanager图形化远程连接rhel6
    powerdesigner
    CentOS和RedHat Linux的区别
    win7防火墙端口开放
    微服务 环境问题处理
    lombok
    pl/sql Devloper 如何查看表结构
    pl/sql Devloper使用
    luogu P4231 三步必杀
  • 原文地址:https://www.cnblogs.com/dongsheng/p/2750391.html
Copyright © 2011-2022 走看看