题目描述
在平面上有一些二维的点阵。
这些点的编号就像二维数组的编号一样,从上到下依次为第 1至第 n 行,从左到右依次为第 1至第 m 列,每一个点可以用行号和列号来表示。
现在有个人站在第 1行第 1 列,要走到第 n 行第 m 列。只能向右或者向下走。
注意,如果行号和列数都是偶数,不能走入这一格中。
问有多少种方案。
输入格式
输入一行包含两个整数 n,m。
输出格式
输出一个整数,表示答案。
输入输出样例
输入 #1复制
3 4
输出 #1复制
2
说明/提示
1≤n,m≤30。
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int m = scanner.nextInt();
int[][] dp = new int[n + 1][m + 1];
for(int i = 1;i <= n;i++) {
dp[i][1] = 1;
}
for(int j = 1;j <= m;j++) {
dp[1][j] = 1;
}
for(int i = 2;i <= n;i++) {
for(int j = 2;j <= m;j++) {
if(i % 2 == 0 && j % 2 == 0)
dp[i][j] = 0;
else
dp[i][j] = dp[i - 1][j] + dp[i][j - 1];
}
}
System.out.print(dp[n][m]);
}
}
题解分析:与之前的那个机器人的题目一样,不过这个题加了一个条件,如果行数和列数都是偶数则不能走,那么到达此点的方案数为dp[i][j] = 0。