分析:
- 动态规划是有小到大得进行
- 递归表面从大到小,实际从小到大
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sca = new Scanner(System.in);
int x = sca.nextInt();
int y = sca.nextInt();
//递归的方法
System.out.println(solve(x,y));
//动态规划
System.out.println(solve2(x,y));
}
private static int solve2(int x, int y) {
int a[][] = new int[x + 1][y + 1];
a[1][1] = 1;
for(int i = 1; i <= x; i ++) {
for(int j = 1; j <= y; j ++) {
if(i > 1 && j > 1) {
a[i][j] = a[i - 1][j] + a[i][j - 1];
}
else {
a[i][j] = 1;
}
}
}
return a[x][y];
}
private static int solve(int x, int y) {
if(x == 1 || y == 1) {
return 1;
}
return solve(x - 1,y) + solve(x, y - 1);
}
}
运行结果:
6
6
252
252