题解 | #放苹果#
放苹果
https://www.nowcoder.com/practice/bfd8234bb5e84be0b493656e390bdebf
import java.util.*; /** 动态规划 0 1 2 3 4 5 6 7 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 2 1 1 2 2 3 3 4 4 3 1 1 2 3 4 5 7 8 状态转移方程(这方程啥意思我也不知道,只是推出来了,有会的能帮我解释一下吗) : if(j-i<0) dp[i][j] = dp[i-1][j]; else dp[i][j] = dp[i-1][j] + dp[i][j-i]; */ // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 while (in.hasNextInt()) { // 注意 while 处理多个 case int a = in.nextInt(); int b = in.nextInt(); int[][] dp = new int[b+1][a+1]; for(int i=0;i<=b;i++) dp[i][0]=1; for(int i=0;i<=a;i++) dp[0][i]=0; for(int i=1;i<=b;i++) { for(int j=1;j<=a;j++) { if(j-i<0) dp[i][j] = dp[i-1][j]; else dp[i][j] = dp[i][j-i] + dp[i-1][j]; } } System.out.println(dp[b][a]); } } }
动态规划:
状态转移方程(这方程啥意思我也不知道,只是推出来了,有会的能帮我解释一下吗) :
if(j-i<0) dp[i][j] = dp[i-1][j];
else dp[i][j] = dp[i-1][j] + dp[i][j-i];