n=0时    {}
n=1时 {},{1}
n=2时 {},{1},{2}
n=3时 {},{1},{2},{1,2},{3},{1,3},{2,3},{1,2,3}
请编程实现输入n值,自动打出上面规律的集合。我寻思这是一个有关二维表的问题。

解决方案 »

  1.   

    我看是这个的一个嵌套:
    如果要得到n的输入,就要有n-1的输入二份,然后再在第二份的每个括号中续添一个n。
    以n=3为例,
    首先要n=2的,
    n=2时{},{1},{2},{1,2}
    两份:
    {},{1},{2},{1,2},{},{1},{2},{1,2}
    后面的添加3:
    {},{1},{2},{1,2},{3},{1,3},{2,3},{1,2,3}
    上面的就是n=3的输出!
    当然要出2的输入就要1的出入,
    要出1的就要0的,就到头了,算法就这样,不过实现还没有出来!
    看大家了!
      

  2.   

    输入n,a[n+1]={0,1,2,...n}就是求a的冥集
    void GetPowerSet1(int i,char a[],char b[],int n)
    {
        //功能:求以数组a中元素为集合中元素的集合的冥集
        int j;
        if(i==n-1)
       {
        b[n]='\0';
        for(j=0;j<n+1;j++)
        if(b[j]!=' ') cout<<b[j];     //对空格不输出
         cout<<endl;
       }
        else
        {
            b[i]=a[i]; GetPowerSet(i+1,a,b,n);
           b[i]=' ';   GetPowerSet(i+1,a,b,n);
        }
    }