用递归求一个集合的所有子集
我有了一个程序代码,不过不知道怎么用递归求,程序如下:#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;
}
} 展开
#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("\
");
}
#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("\
");
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询