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