vIllaInssss 2020-09-27 19:24 采纳率: 75%
浏览 102
已采纳

求大神解答 子集生成问题 (十分感谢)

#include<iostream>
#include<set>
using namespace std;
int ex(int n,int m)
{
    long pfs=n;
    long res=1;
    while(m!=0)
    {
        if((m&1)==1)
        res*=pfs;
        pfs*=pfs;
        m>>=1;
    }
    return res;
 } 
set<set<int> >getsub(int*a,int n)
{

    set<set<int> > res;
    for(int i=ex(2,n)-1;i>0;i--)
    {
        set<int>s;
        for(int j=n-1;j>=0;j--)
        {
         if(((i>>j)&1)==1)
         s.insert(a[j]);
        }
        res.insert(s);
    }
    return res; 
}
int main()
{
    int a[5]={1,2,3,4,5};
    set<set<int> > s;
    s=getsub(a,5);
    set<set<int> >::iterator it;
    for(it=s.begin();it!=s.end();it++)
    {
        cout <<*it<< " ";
    }
    cout<<endl;

}
  • 写回答

1条回答 默认 最新

  • threenewbee 2020-09-27 21:13
    关注
    #include<iostream>
    #include<set>
    using namespace std;
    int ex(int n,int m)
    {
        long pfs=n;
        long res=1;
        while(m!=0)
        {
            if((m&1)==1)
            res*=pfs;
            pfs*=pfs;
            m>>=1;
        }
        return res;
     } 
    set<set<int>> getsub(int*a,int n)
    {
    
        set<set<int>> res;
        for(int i=ex(2,n)-1;i>0;i--)
        {
            set<int>s;
            for(int j=n-1;j>=0;j--)
            {
             if(((i>>j)&1)==1)
             s.insert(a[j]);
            }
            res.insert(s);
        }
        return res; 
    }
    int main()
    {
        int a[5]={1,2,3,4,5};
        set<set<int>> s;
        s=getsub(a,5);
        set<set<int>>::iterator it;
        for(it=s.begin();it!=s.end();it++)
        {
            set<int>::iterator it1;
            for (it1=it->begin(); it1 != it->end(); it1++)
                cout <<*it1<< " ";
            cout << endl;
        }
    }
    

    1
    1 2
    1 2 3
    1 2 3 4
    1 2 3 4 5
    1 2 3 5
    1 2 4
    1 2 4 5
    1 2 5
    1 3
    1 3 4
    1 3 4 5
    1 3 5
    1 4
    1 4 5
    1 5
    2
    2 3
    2 3 4
    2 3 4 5
    2 3 5
    2 4
    2 4 5
    2 5
    3
    3 4
    3 4 5
    3 5
    4
    4 5
    5

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 Oracle中如何从clob类型截取特定字符串后面的字符
  • ¥15 想通过pywinauto自动电机应用程序按钮,但是找不到应用程序按钮信息
  • ¥15 MATLAB中streamslice问题
  • ¥15 如何在炒股软件中,爬到我想看的日k线
  • ¥15 51单片机中C语言怎么做到下面类似的功能的函数(相关搜索:c语言)
  • ¥15 seatunnel 怎么配置Elasticsearch
  • ¥15 PSCAD安装问题 ERROR: Visual Studio 2013, 2015, 2017 or 2019 is not found in the system.
  • ¥15 (标签-MATLAB|关键词-多址)
  • ¥15 关于#MATLAB#的问题,如何解决?(相关搜索:信噪比,系统容量)
  • ¥500 52810做蓝牙接受端