放苹果(暑假每日一题 13)

M M M 个同样的苹果放在 N N N 个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?

盘子相对顺序不同,例如 5 , 1 , 1 5,1,1 511 1 , 5 , 1 1,5,1 151 算作同一种分法。

输入格式
输入包含多组测试数据。

每组数据占一行,包含两个整数 M M M N N N

输出格式
每组数据,输出一行一个结果表示分法数量。

数据范围
1 ≤ M , N ≤ 10 1≤M,N≤10 1M,N10
输入样例:

7 3

输出样例:

8

#include<iostream>

using namespace std;

int m, n;

int dfs(int u, int sum, int last){
    
    
    
    if(u == n)
        return sum == 0;
    
    int res = 0;
    for(int i = last; i <= sum; i++)
        res += dfs(u + 1, sum - i, i);
    
    return res;
}

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

猜你喜欢

转载自blog.csdn.net/qq_46456049/article/details/126114760