这是作业中的一个问题,我被困住了,如果有人能指导我,我会很高兴。
通过在第一个单元格(第 0 行第 0 列)进行统计来定义合法路径,并通过将单元格中数字的第一位和第二位数字相加来计数到下一步,直到到达最后一个单元格(第 n 行第 n 列) )。
例如:如果在单元格 [2][3] 中有数字 15,那么下一步可以是:行 +1 和列 +5 到 [3][8] 或行 +5 和 +1列到 [7][4]
该方法应该返回有多少合法路径。
我正在尝试对这个问题使用回溯递归方法,除了重载方法之外,我不能使用任何循环或任何其他方法。
这是我到目前为止提出的代码:
public static int countPaths (int[][] mat)
{
return countPaths(mat,0,0);
}
private static int countPaths(int[][] mat, int col, int row)
{
if ((col==mat.length-1 && row==mat[0].length-1 ) {
return 1;
}
return countPaths(mat,mat[col][row]/10+col,mat[col][row]%10+row) + countPaths(mat,mat[col][row]%10-col,mat[col][row]/10-row);
}
谢谢你的帮助 !