问题描述:列出一个集合的元素个数为k的所有子集。
思路:在字典顺序列出所有子集的基础上判断元素个数就可以了,比较简单。代码如下:
1 #include <stdio.h> 2 #define MAX 1000 3 4 int main() 5 { 6 int n=5; 7 int set[MAX]={1}; 8 int index=0; 9 int count=2; 10 int k=3; 11 while(set[0]!=n) 12 { 13 if(set[index]<n) 14 { 15 set[index+1]=set[index]+1; 16 index++; 17 } 18 else 19 { 20 index--; 21 set[index]++; 22 } 23 int a_index; 24 count++; 25 if(index==k-1) 26 { 27 printf("%d:{",count); 28 for(a_index=0;a_index<=index;a_index++) 29 printf("%d ",set[a_index]); 30 printf("}\n"); 31 } 32 } 33 return 0; 34 }
本文转自NeilHappy 51CTO博客,原文链接:http://blog.51cto.com/neilhappy/1126669,如需转载请自行联系原作者