希望大家能帮助下我,关于递归问题(2)

来源:百度知道 编辑:UC知道 时间:2024/06/03 16:42:31
用递归方法做这题....(c++)
找出n个自然数(1,2,3……n)中r个数的组合。
例如 n=5,r=3。
5 4 3
5 4 2
5 4 1
5 3 2
5 3 1
5 2 1
4 3 2
4 3 1
4 2 1
3 2 1

#include <iostream.h>

int flag[1024]={0};
int n,r,i;

void rec(int lev,int sum){
if(sum==r){
for(i=0;i<n;i++)
if(flag[i])
cout<<n-i<<" ";
cout<<endl;
return;
}

if(lev==n)
return;
flag[lev]=1;
rec(lev+1,sum+1);
flag[lev]=0;
rec(lev+1,sum);

}

int main(){
cin>>n>>r;
rec(0,0);
return 0;
}