【发布时间】:2016-07-31 16:11:29
【问题描述】:
我有一个矩阵,一个起点和一个终点,我想计算一个矩阵,其中每个 matrix[i][j] 表示从起点到终点经过 (i, j) 位置。
我的解决方案正确计算了从起点到终点的路径总数(存储在 matrix[startx][starty] 或 matrix[endx][endy] 中的值),但并非所有其他值都是正确的。
你有什么建议?
我的代码如下:
private static long solve() {
board[startx][starty] = 1;
for (int i = endx; i <= startx; i++) {
for (int j = endy; j >= starty; j--) {
if (i > 0 && j < board[i].length - 1)
board[i][j] += board[i - 1][j] + board[i][j + 1];
else if (i > 0)
board[i][j] += board[i - 1][j];
else if (j < tablero[i].length - 1)
board[i][j] += board[i][j + 1];
}
}
for(int j = starty + 1; j < endy; j++) {
board[endx][j] = board[endx + 1][j] +
board[endx][j - 1];
}
for(int i = endx + 1; i < startx; i++) {
board[i][endy] = board[i + 1][endy] +
board[i][endy - 1]);
}
board[endx][endy] = board[endx][endy - 1] +
board[endx + 1][endy]);
return board[startx][starty];
}
谢谢。
【问题讨论】:
-
可以接受哪些路径?简单的?单调(仅向右和向下)?不要犹豫,提供重要的细节。
-
唯一可接受的路径是顶部和右侧
标签: java algorithm matrix dynamic-programming