?? ? 問題描述:列出一個集合的元素個數為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,如需轉載請自行聯系原作者