题解 | #放苹果#

放苹果

https://www.nowcoder.com/practice/bfd8234bb5e84be0b493656e390bdebf

#include <iostream>
#include <vector>
using namespace std;
int f(int a, int b) {
    vector<vector<int>> dp(a + 1, vector<int>(b + 1,
                           0)); //dp[i][j]表示i个苹果放在j个盘子的分法
    for (int i = 1; i <= b; ++i) {
        dp[0][i] = 1;//0个苹果只有一种分法
    }
    for (int i = 1; i <= a; ++i) {
        for (int j = 1; j <= b; ++j) {
            if(i < j)
            dp[i][j] = dp[i][j - 1];
            else
                dp[i][j] = dp[i][j - 1] + dp[i - j][j];//(有一个盘子为空)+(没有盘子为空,每个盘子至少有一个苹果)
        }
    }
    return dp[a][b];

}
int main() {
    int a, b;
    while (cin >> a >> b) {
        cout << f(a, b) << endl;
    }
    return 0;
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

10-18 13:01
已编辑
西安理工大学 C++
小米内推大使:建议技能还是放上面吧,hr和技术面试官第一眼想看的应该是技能点和他们岗位是否匹配
点赞 评论 收藏
分享
尊尼获获:闺蜜在哪?
点赞 评论 收藏
分享
1 1 评论
分享
牛客网
牛客企业服务