求幂集
#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);
}*/