思路
定义一个递归函数sel(int least , int pos , int n , int m),代表从n个数中选择m个,pos表示当前位置可以用的最小数字是least,结束条件是pos == m,这样亦可保证字典序输出。
程序
#include<iostream>
int ans[15];
using namespace std;
void print(int n){
for (int i = 0 ; i < n ; ++i){
if(i) cout << " "; cout << ans[i];
}
cout << endl;
return;
}
void sel(int least , int pos , int n , int m){
if ( pos == m) {
print(m);
return;
}
if (pos > m) return;
for (int st = least ; st <= n ; ++st){
ans[pos] = st;
sel(st+1 , pos +1 , n , m);
}
return;
}
int main(){
int n , m;
cin >> n;
cin >> m;
sel(1,0,n,m);
}