题解 | #放苹果#

放苹果

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

const readline = require("readline");

const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout,
});
rl.on("line", function (line) {
    const tokens = line.split(" ");
    const apples = tokens[0];
    const plates = tokens[1];
    let dp = []; // dp 数组 存每个组合的结果;
    dp[0] = new Array(Number(plates+1)).fill(0)
    for (let x = 0; x < apples; x++) {
        dp.push([0,1]);
    }
    // console.log(JSON.stringify(dp));
    // 递推顺序
    for (let i = 1; i <= plates; i++) {
        for (let j = 1; j <= apples; j++) {
            if(i > j){
                dp[j][i] = dp[j][i-1]
            }
            if(j === i){
			// 每个盘子分配1个是一次新的结果
                dp[j][i] = Number(dp[j][i-1]) + 1;
                continue;
            }
            // 递推公式 每一项的盘子-1的分配结果 + 每个盘子都放1个后 重新分配剩下的j-i个苹果 就是重新分配一下j-i个苹果到i个盘子里
            if (j > i) {
                dp[j][i] = Number(dp[j][i-1]) + Number(dp[j-i][i]);
                continue;
            }
        }
    }
    console.log(dp[apples][plates]);
});

全部评论

相关推荐

05-09 12:23
已编辑
华南理工大学 Java
野猪不是猪🐗:给他装的,双九+有实习的能看的上这种厂我直接吃⑨✌们拿它练练面试愣是给他整出幻觉了
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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