跳跃问题(Java)
某n*n的棋盘的每个格子中都有1到9个整数。从棋盘的左上角出发,向右或向下每次跳跃格子所指定的格数,判断是否能够到达棋盘的右下角。如果能,输出true, 否则输出false.
输入:
输入第一行为整数n,表示棋盘方格的数量。其后的n行,各行均有n个数字。表示在该方格中可以向下或向右跳跃的方格数。
输出:
输出1行,true或者false. true表示从左上角可以跳跃到右下角,否则为false。
样例输入:
7
2 5 1 6 1 4 1
6 1 1 2 2 9 3
7 2 3 2 1 3 1
1 1 3 1 7 1 2
4 1 2 3 4 1 2
3 3 1 2 3 4 1
1 5 2 9 4 7 1
样例输出:
true
Java:
public class JumpGame {
public static void main(String[] args){
int[][] nums=new int[][]{
{2,5,1,6,1,4,1},
{6,1,1,2,2,9,3},
{7,2,3,2,1,3,1},
{1,1,3,1,7,1,2},
{4,1,2,3,4,1,2},
{3,3,1,2,3,4,1},
{1,5,2,9,4,7,1}
};
int x=0,y=0;
boolean flag = jump(x,y,nums);
System.out.println("能否到达:"+flag);
}
public static boolean jump(int x,int y,int[][] nums){
int[][] board = nums;
if(x>=board.length || y>=board[0].length){
return false;//超出边界
}
if(y==board.length-1 && x==board.length-1){
return true;
}
int jumpSize = board[x][y];
return jump(x+jumpSize,y,board) || jump(x,y+jumpSize,board);
}
}