输入一个正整数n(n<=26),利用二进制法输出字母表(A-Z)前n个字母所构成的所有子集合,包括空集。
输入格式:
一个正整数n(n<=26)。
输出格式:
输出前n个字母组成的所有子集合,每个子集合用一对大括号包含在内。每个字母之间,以及字母与大括号之间都有一个空格,最右边大括号后面没有空格。空集表示为:一对大括号中间一个空格。
输入样例:
3
输出样例:
{ }
{ A }
{ B }
{ A B }
{ C }
{ A C }
{ B C }
{ A B C }
#include <stdio.h>
#include <stdlib.h>
char c[]="ABCDEFGHIJKLMNOPQRSTUVWSYZ";
void f(int n)
{
int j=0;
printf("{ ");
while(n)
{
if(n%2)
printf("%c ",c[j]);
n/=2;
j++;
}
printf("}\n");
}
int main()
{
int n,i,sum=1;
scanf("%d",&n);
for(i=1;i<=n;i++)
sum*=2;
sum=sum-1;
for(i=0;i<=sum;i++)
f(i);
return 0;
}