求幂集

#include<iostream>

using namespace std;

char B[20];//默认为'\0'

void  getpowerset(int i,char a[])

{

         if(i>=strlen(a))

         {

                   cout<<"{";

                   if(B[0])

                   {

                            for(int j=0;j<strlen(B)-1;j++)

                            cout<<B[j]<<",";

                            cout<<B[j]<<"},";

                   }

                   else

                            cout<<"⊙"<<"}";

         }

         else

         {

                   char x=a[i];

                   int k=strlen(B);

                   B[k]=x;

                   getpowerset(i+1,a);

                   B[k]='\0';//在舍的时候赋值为空

                   getpowerset(i+1,a);

         }

}

void main()

{

         cout<<"请输入数据集合,以字符串方式输入"<<endl;

         char *str=new char[100];

         cin>>str;

         cout<<"\n幂集为:\n\n{";

         getpowerset(0,str);

         cout<<"}\n";

         system("pause");

}

/*#include<iostream>

#include<list>

using namespace std;

void GetPowerSet(int i,list<int>a,list<int>&b)

{

         int x;

         if(i>a.size())

         {

                   while(!b.empty())

                   {

                            cout<<b.front()<<'\t';

                            b.pop_front();

                   }

         }

         else

         {

                   int j=0;

                   list<int>::iterator itr=b.begin();

                   for(;itr!=b.end();itr++,j++)

                            if(j==i)

                            {

                                     x=*itr;

                                     break;

                            }

                            int k=b.size();

                            itr=b.begin();

                            for(int l=0;l<k+1;l++,itr++);

                            b.insert(itr,x);

                            GetPowerSet(i+1,a,b);

                            itr=b.begin();

                            for(int c=0;c<k+1;c++,itr++);

                            b.erase(itr);

         }

 

}

void main()

{

         list<int>a;

         cout<<"请输入有多少个元素";

         int num;

         cin>>num;

         for(int i=0;i<num;i++)

         {

                   cin>>num;

                   a.push_back(num);

         }

         list<int>b;

         GetPowerSet(1,a,b);

}*/

posted @ 2012-11-23 22:16  ♂咱說 ろ算  阅读(333)  评论(0编辑  收藏  举报