输出一个由4个不重复的字母元素组成的集合的所有子集。例如:输入a b c d,则输出集合{a,b,c,d}的所有子集。c语言
时间: 2024-03-06 12:47:54 浏览: 139
好的,以下是实现该功能的C语言代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
void generateSubsets(char elements[], int size) {
int num_subsets = 1 << size; // 计算2^size
for (int i = 0; i < num_subsets; i++) { // 枚举所有子集
printf("{ ");
for (int j = 0; j < size; j++) {
if (i & (1 << j)) { // 判断元素是否在子集中
printf("%c ", elements[j]);
}
}
printf("}\n");
}
}
int main() {
char elements[] = {'a', 'b', 'c', 'd'};
int size = sizeof(elements) / sizeof(elements[0]);
generateSubsets(elements, size);
return 0;
}
```
输出结果为:
```
{ }
{ a }
{ b }
{ a b }
{ c }
{ a c }
{ b c }
{ a b c }
{ d }
{ a d }
{ b d }
{ a b d }
{ c d }
{ a c d }
{ b c d }
{ a b c d }
```
这个算法的时间复杂度为 O(2^n),其中 n 是元素的数量。
阅读全文