输入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(" "); 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; }