c语言求字符串所有子集
时间: 2024-01-08 19:03:25 浏览: 88
以下是一个使用递归实现的C语言程序,可以求出给定字符串的所有子集:
```c
#include <stdio.h>
#include <string.h>
void print_subset(char *str, int start, int end, char *subset) {
if (start == end) {
printf("%s\n", subset);
return;
}
print_subset(str, start+1, end, subset);
subset[strlen(subset)] = str[start];
print_subset(str, start+1, end, subset);
subset[strlen(subset)-1] = '\0';
}
int main() {
char str[100];
printf("Enter a string: ");
scanf("%s", str);
int len = strlen(str);
char subset[100] = "";
printf("Subsets of %s:\n", str);
print_subset(str, 0, len, subset);
return 0;
}
```
程序的实现思路是使用递归来枚举字符串的所有子集。在递归函数中,我们首先检查是否已经到达了字符串的末尾,如果是,则打印当前的子集并返回。如果不是,则分别对包含当前字符和不包含当前字符的子集进行递归调用。在每次递归调用结束后,我们需要将subset字符串的最后一个字符删除,以便在下一次递归调用时重新构造新的子集。最后,我们在主函数中读入字符串并调用print_subset函数来打印所有子集。
阅读全文