从一个2×2方阵的左上角出发,只允许向右或向下移动,则恰好有6条通往右下角的路径。
方法一:坐标法,计算每个坐标经过的路径。
public class LatticePaths_13 {
public static long LatticePaths(int right,int down,int num) {
if(right == num || down == num) {
return 1;
}
else if(right == num-1 && down == num-1) {
return 2;
}
else{
return LatticePaths(right+1,down,num) + LatticePaths(right,down+1,num);
}
}
public static void main(String[] args) {
System.out.println(LatticePaths(0,0,20));
}
方法二:计数相加法,每个点的计数就是它的两个相邻坐标的计数和
public static long LatticePaths2(int n) {
long[][] num1 = new long[n+1][n+1];
long ans = 0;
for(int i=0;i<=n;i++) {
num1[i][0]=1;
num1[0][i]=1;
}
for(int i=1;i<=n;i++) {
for(int j=1;j<=n;j++) {
num1[i][j] = num1[i-1][j] + num1[i][j-1];
}
}
return num1[n][n];
}
因篇幅问题不能全部显示,请点此查看更多更全内容