一般组合

输入n个数,从中选出m个数可欧构成集合,输出所有这样的集合

输入

4 3

1 2 3 4

输出

1 2 3

1 2 4

1 3 4

2 3 4

代码:

 1 #include<cstdio>
 2 #include<cstring>
 3 using namespace std;
 4 const int maxn = 100;
 5 
 6 int n,m;
 7 int rcd[maxn],num[maxn],vis[maxn];
 8 
 9 int read_input(){
10 
11    if(scanf("%d %d",&n,&m)==EOF)
12         return 0;
13     for(int i=0;i<n;i++)
14         scanf("%d",&num[i]);
15     return 1;
16 }
17 
18 void select_combination(int l,int p){
19     if(l==m){
20         for(int i=0;i<m;i++){
21             printf("%d",rcd[i]);
22         if(i<m-1)
23             printf(" ");
24         }
25         printf("
");
26         return ;
27     }
28     for(int i=p;i<n;i++){
29         rcd[l]=num[i];
30         select_combination(l+1,i+1);
31 
32     }
33 }
34 int main() {
35     while(read_input()){
36 
37         select_combination(0,0);
38 
39     }
40 
41     return 0;
42 }
View Code
原文地址:https://www.cnblogs.com/hnuicpc0212/p/3163563.html