一般组合

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

输入

4 3

1 2 3 4

输出

1 2 3

1 2 4

1 3 4

2 3 4

#include<cstdio>

#include<cstring>

using namespace std;

const int maxn = 100;



int n,m;

int rcd[maxn],num[maxn],vis[maxn];



int read_input(){



   if(scanf("%d %d",&n,&m)==EOF)

        return 0;

    for(int i=0;i<n;i++)

        scanf("%d",&num[i]);

    return 1;

}



void select_combination(int l,int p){

    if(l==m){

        for(int i=0;i<m;i++){

            printf("%d",rcd[i]);

        if(i<m-1)

            printf(" ");

        }

        printf("\n");

        return ;

    }

    for(int i=p;i<n;i++){

        rcd[l]=num[i];

        select_combination(l+1,i+1);



    }

}

int main() {

    while(read_input()){



        select_combination(0,0);



    }



    return 0;

}

  

你可能感兴趣的:(组合)