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 乌班图ip地址配置及远程SSH
  • ¥15 怎么让点阵屏显示静态爱心,用keiluVision5写出让点阵屏显示静态爱心的代码,越快越好
  • ¥15 PSPICE制作一个加法器
  • ¥15 javaweb项目无法正常跳转
  • ¥15 VMBox虚拟机无法访问
  • ¥15 skd显示找不到头文件
  • ¥15 机器视觉中图片中长度与真实长度的关系
  • ¥15 fastreport table 怎么只让每页的最下面和最顶部有横线
  • ¥15 java 的protected权限 ,问题在注释里
  • ¥15 这个是哪里有问题啊?