求解集合的子集
2006-10-02 06:33
134 查看
#include<stdio.h>
#include<string.h>
#define MAX_LENGTH 50
int number=0;
main()
{
void set(int,char *,char *);
char a[MAX_LENGTH],b[MAX_LENGTH]={"/0"};
int i=0;
printf("please input a string:");
scanf("%s",a);
set(i,a,b);
printf("the number of jihe:%d",number);
}
void set(int i,char *a,char *c){
char d[MAX_LENGTH];
strcpy(d,c);
if(i==strlen(a)){
printf("{%s}/n",c);
number++;
}
else{
set(i+1,a,d);
strncat(d,a+i,1);
set(i+1,a,d);
}
}
这里用一字符串来代表一个集合,比如输入CSDN,就表示集合{C,S,D,N}.求解它的子集并计算个数.输出结果如下:
please input a string:CSDN
{}
{N}
{D}
{DN}
{S}
{SN}
{SD}
{SDN}
{C}
{CN}
{CD}
{CDN}
{CS}
{CSN}
{CSD}
{CSDN}
the number of jihe:16
#include<string.h>
#define MAX_LENGTH 50
int number=0;
main()
{
void set(int,char *,char *);
char a[MAX_LENGTH],b[MAX_LENGTH]={"/0"};
int i=0;
printf("please input a string:");
scanf("%s",a);
set(i,a,b);
printf("the number of jihe:%d",number);
}
void set(int i,char *a,char *c){
char d[MAX_LENGTH];
strcpy(d,c);
if(i==strlen(a)){
printf("{%s}/n",c);
number++;
}
else{
set(i+1,a,d);
strncat(d,a+i,1);
set(i+1,a,d);
}
}
这里用一字符串来代表一个集合,比如输入CSDN,就表示集合{C,S,D,N}.求解它的子集并计算个数.输出结果如下:
please input a string:CSDN
{}
{N}
{D}
{DN}
{S}
{SN}
{SD}
{SDN}
{C}
{CN}
{CD}
{CDN}
{CS}
{CSN}
{CSD}
{CSDN}
the number of jihe:16
相关文章推荐
- C语言递归求解集合的所有子集
- java求解 集合的子集
- java求解集合的子集的实例
- 程序员面试金典:魔术索引II、集合的子集
- 求一个集合的所有子集
- 输出一个集合的所有子集(算法)
- 已知集合A和B的元素分别用不含头结点的单链表存储,函数difference()用于求解集合A与B的差集,并将结果保存在集合A的单链表中。例如,若集合A={5,10,20,15,25,30},集合B={
- 已知集合A和B的元素分别用不含头结点的单链表存储,函数difference()用于求解集合A与B的差集,并将结果保存在集合A的单链表中
- 18 m 元素集合的 n 个元素子集
- 算法学习:子集和数问题求解
- Java 求集合的所有子集
- 9.9递归和动态规划(四)——返回某集合的全部子集
- 对subList、substring等获得的子集进行操作会影响原集合
- 求集合子集,和全排列的递归算法实现(c++,Dev C++调试通过)
- 集合子集问题:
- 9.9递归和动态规划(四)——返回某集合的所有子集
- 自创---用栈求出集合的子集
- 求集合的所有子集的算法
- LeetCode--Subsets(集合的子集)Python
- 求一个集合的所有子集