用递归求一个集合的所有子集

我有了一个程序代码,不过不知道怎么用递归求,程序如下:#include<stdio.h>#include<fstream.h>#include&l... 我有了一个程序代码,不过不知道怎么用递归求,程序如下:
#include<stdio.h>
#include<fstream.h>
#include<iostream.h>
int main()
{
char a[26];
int i,n;
long j,k;
long bits=1;

ifstream fin("number.txt");
fin>>n;
for(i=0;i<26;i++)
{
a[i]=97+i;
}
for(i=1;i<n;i++)
{
bits=bits<<1;
bits++;
}
printf("NULL\
");
for(j=1;j<=bits;j++)
{
printf("{");
k=1;
for(i=1;i<=n;i++)
{
if((j&k)!=0)

printf("%c",a[i-1]);

k=k<<1;

}

printf("}");
cout<<endl;
}
}
展开
 我来答
匿名用户
2013-09-24
展开全部
程序代码:
#include
<stdio.h>

#include
<stdlib.h>

#include
<string.h>

#define
N 20

int
used[N];

void
output(char
*str);

int
diver(char
*str,
int
len,
int
index);

int
main(
void
)

{

char
input[20];

int
len;

printf("Please
enter
a string:");

while(fgets(input,
20,
stdin)
==
NULL
||
input[0]
==
'\
')

{

printf("Input
error!\
");

printf("Please
enter
a string
again:");

}

input[strlen(input)
- 1]
= '\\0';

len
= strlen(input);

diver(input,
len,0);

return
0;

}

int
diver(char
*str,
int
len,
int
index)

{

if(index
>=
len)

output(str);

else

{

used[index]
= 1;

diver(str,
len,
index
+ 1);

used[index]
= 0;

diver(str,
len,
index
+ 1);

}

return
0;

}

void
output(char
*str)

{

int
i;

printf("{");

for(i
= 0;i
<
N;
i++)

if(used[i])

printf("%c",str[i]);

printf("}");

printf("\
");

}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式