【发布时间】:2014-02-17 08:41:19
【问题描述】:
我正在编写一个递归方法来查找二维数组中的所有可能路径。从左上点 (0,0) 到右下点最后一个点。并返回路径的总和。
public static void printPathWeights(int[][] m)
{
printPathWeights(m, 0, 0, 0);
}
public static void printPathWeights(int[][] m, int row, int col, int sum)
{
if(row == 0 && col ==0)
sum = 0;
if (row == m.length - 1 && col == m[row].length - 1)
System.out.println(sum);
else
{
if (row >= 0 && row < m.length && col >= 0 && col < m[row].length)
printPathWeights(m, row - 1, col, sum += m[row][col]); // Up
if (row >= 0 && row < m.length && col >= 0 && col < m[row].length)
printPathWeights(m, row + 1, col, sum += m[row][col]); // Down
if (row >= 0 && row < m.length && col >= 0 && col < m[row].length)
printPathWeights(m, row, col - 1, sum += m[row][col]); // Left
if (row >= 0 && row < m.length && col >= 0 && col < m[row].length)
printPathWeights(m, row, col + 1, sum += m[row][col]); // Right
}
}
目前我的问题是这个函数进入无限循环并且不打印我的总和
【问题讨论】:
-
给你这个任务的人可能参与了上周的 Hackerrank.com CodeSprint 5 竞赛。这是他们提出的问题之一:)