题解 | #放苹果#

放苹果

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

#include <iostream>

using namespace std;

int dp[11][11];

/**
 * 递归
 * m为0,一种;m为1两种;n为0一种;n为1两种
 */
int fio(int m,int n){
    if (m<=1 || n<=1) return 1;
    if (m<n) return fio(m,m);
    return fio(m,n-1) + fio(m-n,n);
}

/**
 * 动态规划
 * 把m个同样的苹果放在n个同样的盘子里,允许有的盘子空着不放
 * dp[i][j]表示把i个苹果放到j个盘子的放法
 * dp[0][j] = 1,dp[i][0] = 1
 */
int apple(int m,int n){
    for (int i = 0; i <= m; ++i) {
        for (int j = 1; j <= n; ++j) {
            if (i<=1 || j==1) dp[i][j] = 1;
            else if (i<j) dp[i][j] = dp[i][i];
            else dp[i][j] = dp[i][j-1] + dp[i-j][j];
        }
    }
    return dp[m][n];
}

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

全部评论

相关推荐

哈哈哈,你是老六:百度去年裁员分评不好,赶紧弄点红包
点赞 评论 收藏
分享
03-05 17:03
已编辑
浙江工商大学 C++
陈好好wy:整体看下来有点空空的感觉,可以把每一段项目经历都再完善一下,然后用小标题的形式写个两到三条,目前看有点太简单了,不太能看出具体在这个项目里做了什么工作。还是要尽量把自己做的工作以量化的形式体现在简历上呢。
双非本科求职如何逆袭
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务