输出一个集合所有的子集合
2010-08-14 22:09
447 查看
#include <iostream>
using namespace std;
const int N = 1000;
void SelSubstr(int flag[],int count)
{
for(int i = 0;i < count;i++)
{
flag[i] = flag[i]^1;
//当前元素取反后为0则停止。这样取反正好有2^n-1种情况,而且不重复。
if(!flag[i])
break;
}
}
void print(int flag[],int count,const char *str,char *subStr)
{
int j = 0;
for(int i = 0;i<count;i++)
{
if(flag[i]) //把要输出的字符放在subStr中
subStr[j++] = str[i];
}
subStr[j] = '/0';
cout<<subStr<<endl;
}
int main()
{
char *str = new char
; //原字串
char *subStr = new char
; //子集临时存放字串
cout<<"Input a string:";
cin.getline(str,N);
int count = strlen(str);
int *flag = new int[count];
//默认开始时,设置所有元素都没显示
for(int i = 0;i< count;i++)
flag[i] = 0;
cout<<"As follow is substr:"<<endl;
int subStrCount = 0; //统计子集的数目
int q = 2<<(count-1); //计算循环次数
for(int i = 0;i < q;i++)
{
SelSubstr(flag,count); //取子串(子集)
print(flag,count,str,subStr); //显示所取子串(子集)
subStrCount++;
}
cout<<"total number of the subset(include Empty-set)is: "<<subStrCount<<endl;
return 0;
}
using namespace std;
const int N = 1000;
void SelSubstr(int flag[],int count)
{
for(int i = 0;i < count;i++)
{
flag[i] = flag[i]^1;
//当前元素取反后为0则停止。这样取反正好有2^n-1种情况,而且不重复。
if(!flag[i])
break;
}
}
void print(int flag[],int count,const char *str,char *subStr)
{
int j = 0;
for(int i = 0;i<count;i++)
{
if(flag[i]) //把要输出的字符放在subStr中
subStr[j++] = str[i];
}
subStr[j] = '/0';
cout<<subStr<<endl;
}
int main()
{
char *str = new char
; //原字串
char *subStr = new char
; //子集临时存放字串
cout<<"Input a string:";
cin.getline(str,N);
int count = strlen(str);
int *flag = new int[count];
//默认开始时,设置所有元素都没显示
for(int i = 0;i< count;i++)
flag[i] = 0;
cout<<"As follow is substr:"<<endl;
int subStrCount = 0; //统计子集的数目
int q = 2<<(count-1); //计算循环次数
for(int i = 0;i < q;i++)
{
SelSubstr(flag,count); //取子串(子集)
print(flag,count,str,subStr); //显示所取子串(子集)
subStrCount++;
}
cout<<"total number of the subset(include Empty-set)is: "<<subStrCount<<endl;
return 0;
}
相关文章推荐
- 求一个集合的所有子集 输出一个数所有平方和的情况 背包问题的递归解决
- 输出一个集合的所有子集(算法)
- 输入一个集合,输出这个集合的所有子集
- 输出一个集合的所有子集(算法)
- 输出一个集合的幂集(所有子集)
- 输出一个集合的所有子集合-Java代码实现(二)
- 输出一个集合的所有子集,从长到短
- 输出一个集合所有子集的元素和(Print sums of all subsets of a given set)
- 给定一个集合,输出它的所有子集
- 输出一个集合的所有子集合
- 给定一个集合,输出它的所有子集(JAVA实现)
- 输出一个集合所有冪集的代码
- 输出一个集合的所有子集
- 有一个集合A,它又n个元素,请用回溯法输出它所有的子集。
- 输出一个集合的所有子集(算法)
- 输出一个集合的所有子集合-Java代码实现(一)
- 输出一个集合的所有子集
- 输入一个正数n,输出所有和为n的连续正数序列
- 《程序员面试题精选》05.输出一个字符串的所有子串
- 一个文件中保存一首唐诗,用字符流流进行复制,复制到新文件中的诗,所有的内容倒序输出。