计算从n个人中选k个人组成委员会的不同组合数。其中1=<n<=22,1=<k=<22,请使用函数递归完成。

C语言 来点简单易懂的 新手
2025-02-23 01:10:24
推荐回答(1个)
回答1:

#include
const int maxn = 25;
int n,k;
int sel[maxn];
void dfs(int s,int v) //s 当前枚举位置,v 已经选中人数
{
if(v == k){
for(int i = 0;i < k;i ++)
printf("%d ",sel[i]);
printf("\n");
return ;
}
if(s >= n) return ;
if(n-s + v < k) return ;
else{
sel[v] = s+1;
dfs(s+1,v+1); //选s
dfs(s+1,v); //不选
}
}
int main(int argc,char *argv[])
{
scanf("%d%d",&n,&k);
dfs(0,0);
return 0;
}