题解 | #放苹果#

放苹果

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

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNext()) {
            int[] dp = new int[in.nextInt() + 1];
            Arrays.fill(dp, 1);
            int plat = in.nextInt();
            for (int i = 2; i <= plat; i++) for (int j = 0; j < dp.length; j++) if (j - i >= 0) dp[j] += dp[j - i];
            System.out.println(dp[dp.length - 1]);
        }
    }
}

动态规划:

最后一个盘子有两种可能

一种是有空盘,假设最后一个盘子就是空盘之一,所以直接等于少一个盘子的结果

另一种是没有空盘,先往所有盘子放苹果,然后就等于苹果数减少盘子数的结果

因此推出状态转移公式:dp[j] += dp[j - i];

#算法#
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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