题目描述
算法思想
当前点到目标点的路径数量就是:右边的点到目标点的路径数量+下面的点到目标点的路径数量,依次类推,直到目标点。
由于我们是知道目标点位置的,所以直接从目标点开始,依次计算节点到目标节点的路径数量,赋值完成后起点(0,0)的值就是题目的解。
以下为核心代码:
public static void getPathPro(long[][] map,int aim_x,int aim_y){
for(int i=aim_x;i>=0;i--){
for(int j=aim_y;j>=0;j--){
if(map[i][j]>=0){
if(map[i+1][j]>=0){
map[i][j]+=map[i+1][j];
}
if(map[i][j+1]>=0){
map[i][j]+=map[i][j+1];
}
}
}
}
}
第一步:初始化数组;
为了运行操作的一致性,在初始化数组时,若目标点为(n,m)则初始化的数组为long[n+1][m+1](由于最右边节的一列节点没有右节点,最下面一行的节点没有下面的节点)。
Scanner scanner=new Scanner(System.in);
//目标点位置
int aim_x=scanner.nextInt();
int aim_y=scanner.nextInt();
//马的位置
int horse_x=scanner.nextInt();
int horse_y=scanner.nextInt();
//用于描述棋盘的数组
long[][] map=new long[aim_x