方案数量
时间限制:
1000 ms | 内存限制:
65535 KB
难度:
2
-
描述
-
给出一个N*M的棋盘,左下角坐标是(0,0),右上角坐标是(N,M),规定每次只能向上或者向右走,问从左下角走到右上角,一共有多少种方案。上图是一个4*3的棋盘。
-
输入
-
多组测试数据。
每组输入两个整数N,M(0≤N,M≤30)。
输入0,0时表示结束,不做任何处理。
输出
- 对于每组测试数据,输出对应的方案数。 样例输入
-
4 3 2 2 0 0
样例输出
-
35 6
-
多组测试数据。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int row = scanner.nextInt();
int col = scanner.nextInt();
long dp[][] = new long[32][32];
for (int i = 0; i < 31; i++) {
dp[i][0] = dp[0][i] = 1;
}
for (int i = 1; i < 31; i++) {
for (int j = 1; j < 31; j++) {
dp[i][j] = dp[i - 1][j] + dp[i][j - 1];
}
}
while (row != 0 || col != 0) {
System.out.println(dp[row][col]);
row = scanner.nextInt();
col = scanner.nextInt();
}
}
}