#牛客创作赏金赛# #刷题我是认真的#
解题思路:
- 有点难,之前很少刷动态规划的题型,难呀 😭
- 核心状态转移方程: dp[i][j]=dp[i−1][j]+dp[i][j−1],分解为从(i-1,j)点出发和从(i,j-1)点出发两种情况
- 具体分析见下图
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int m = in.nextInt();
System.out.println(countWay(n, m));
}
// 状态转移方程: dp[i][j]=dp[i−1][j]+dp[i][j−1]
public static int countWay(int n, int m) {
int[][] dp = new int[n + 1][m + 1];
for (int i = 0; i <= n; i++) {
dp[i][0] = 1;
}
for (int j = 0; j <= m; j++) {
dp[0][j] = 1;
}
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
dp[i][j] = dp[i-1][j]+dp[i][j-1];
}
}
return dp[n][m];
}
}