正在载入在线练习界面,本页内容可直接阅读…
AK CSP › NOIP 提高 2014 第一轮真题 › 第 24 题
NOIP 提高 2014 第一轮 第 24 题:递归计算组合数 C(n,m)
题目
```
#include <stdio.h>
int fun( int n, int minNum, int maxNum )
{
int tot, i;
if ( n == 0 )
return(1);
tot = 0;
for ( i = minNum; i <= maxNum; i++ )
tot += fun( n - 1, i + 1, maxNum );
return(tot);
}
int main()
{
int n, m;
scanf( "%d%d ", &n, &m );
printf( "%d\n", fun( m, 1, n ) );
return(0);
}
```
输入: 6 3
输出:________本小题
请写出程序的输出结果。
答案
20
题解
考点定位
本题考「递归组合数」,对应大纲 4.2.3 递归(难度【3】)。
解题过程
fun(n,minNum,maxNum):从 [minNum,maxNum] 中选 n 个严格递增数的方案数 = C(maxNum−minNum+1? , n)。fun(3,1,6) = C(6,3) = 20。
验证:fun(0,·)=1;fun(1,1,6)=6;fun(2,i,6)=Σ… 组合数解释自洽。
答案:20。
易错提醒
① 递归含义:枚举第一个选的数 i,剩余从 i+1 起选 n−1 个;② 组合数 C(6,3)=20 直接得解。
真题版权归 CCF 所有,本站仅用于非商业教学用途。页面加载后可直接在线作答,作答记录保存在本浏览器或账号中。 京ICP备2026056990号-1
京公网安备11010502062986号