题解 | #放苹果#
放苹果
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];
#算法#
查看16道真题和解析