NOIP 普及组初赛 · NOIP 2011 普及组初赛试题 第 26 题

阅读程序 · 答案 20 · 考点:输入输出、位运算、分支结构、循环结构

← 整套速查表 NOIP 普及组初赛 全部真题

题目

阅读程序写结果

#include<iostream>
using namespace std;

int solve(int n,int m)
{
    int i,sum;
    if(m==1) return 1;
    sum=0;
    for(i=1;i<n;i++)
       sum+= solve(i,m-1);
    return sum;
}

int main()
{
    int n,m;
    cin>>n>>m;
    cout<<solve(n,m)<<endl;
    return 0;
}

输入:7 4

答案:20

考点

输入输出位运算 讲解 →位运算 真题汇总 →分支结构循环结构

解题思维

看到递归求和 → 整数划分方案数

常见错误

易混淆顺序排列与无序划分,本题为无序。

详细解析(节选)

考点:递归|整数划分

程序在做什么

输入两个正整数 n 和 m,调用 solve(n,m) 计算将整数 n 拆分成 m 个正整数之和的方案数(无序)。

同考点真题

在 OI伴学 里做这道题
登录后可计时作答、查看完整六段式解析,并按你的错题自动生成同类练习。
去刷题先做一次 AI 学情诊断