c程序求子集方法1

2022-04-05 08:00:07   文档大全网     [ 字体: ] [ 阅读: ]

#文档大全网# 导语】以下是®文档大全网的小编为您整理的《c程序求子集方法1》,欢迎阅读!
子集,程序,方法
有集合为a,b,c,d,e,f,求真子集

#include int N[6]; int sum=6;

int min,max,count=0;

//计算长度为len的值得范围 void Range(int len) { long Data=0; int m=0; int i,j; for(i=7-len;i<=6;i++) { Data=Data*10+i; }

for(j=1;j<=len;j++) { m=m*10+j; } min=m; max=Data; }

//存入数组

void DataGroup(long d,int len) { int i; for(i=len-1;i>=0;i--) { N[i]=d%10-1; d=d/10; } }

//判断是不是子集

int IsSub(int D[],int len) { int i; if(len==1) return 1; if(N[0]<0) return 0;




for(i=1;i { if(N[i]<0 || N[1]==0 || N[i]>5) return 0; if(N[i-1]>=N[i] ) return 0; } return 1; }

////////////////////////// void D() { int i; for(i=0;i<6;i++) printf("%d ",N[i]); printf("\n"); }

//打印子集

void Dispaly(char C[],int len) { int i; printf("{"); for(i=0;i { if(i==(len-1)) { printf("%c",C[N[i]]); } else { printf("%c,",C[N[i]]); } } printf("}\n"); }

//循环

void Rec(char C[],int len) { long i; for(i=min;i<=max;i++)


{ DataGroup(i,len); // if(IsSub(N,len)) { // D(); Dispaly(C,len); count++; } } }

int main() { char A[6]={'a','b','c','d','e','f'}; int i=2; for(i=1;i<=6;i++) { Range(i); Rec(A,i); } printf("%d\n",count); printf("%d %ld\n",min,max); return 0; }


本文来源:https://www.wddqxz.cn/53f831d907a1b0717fd5360cba1aa81144318f6d.html

相关推荐