【发布时间】:2015-05-14 21:07:35
【问题描述】:
给定一个 int 数字矩阵、一个行和 col 索引(对于包含数字的随机单元格)和一个新数字,我需要递归地返回矩阵 - 但是现在所有与随机匹配的周围单元格手机号码到新的。例如: 对于以下矩阵-
4,1,2,2
4,4,3,1
1,4,4,4
1,4,0,2
由 fill(grid,1,1,0) 调用, 这个需要退回:
* 0 1 2 2
0 0 3 1
1 0 0 0
1 0 0 2
我尝试的是以下
public static int[][] fill(int[][] grid, int i, int j, int needed ) {
if (i<= grid.length - 1 && j<=grid[0].length - 1 && i>0 && j>0) {
grid[i][j] = needed ;
if(legal_Neighbor(grid,i,j, i+1,j))
grid= fill(grid, i+1,j,needed );
if(legal_Neighbor(grid,i,j, i,j+1))
grid= fill(grid, i,j+1,needed );
if(legal_Neighbor(grid,i,j, i,j-1))
grid= fill(grid, i,j-1,needed );
if(legal_Neighbor(grid,i,j, i-1, j))
grid= fill(grid, i-1,j,needed );
}
其中 legal_Neighbor 是我正在调用的一个函数,它检查两个单元格是否具有相同的编号并且彼此相邻
被困在这个问题上几天了。希望得到一些帮助
【问题讨论】:
-
根据您发布的示例,邻居概念似乎不寻常,在我看来,您正在替换与提供的坐标所指向的矩阵匹配的每个项目,不是吗?
-
正确。如果我需要更改的数字是“4”,那么我需要返回一个矩阵,其中所有相邻的“4”都更改为所需的数字
-
这意味着它只是价值的传播。这很容易
-
@HuStmpHrrr 对于我的第一个硬件来说,它是非递归的,这确实很容易。现在虽然涉及递归,但我似乎无法正确..
标签: java recursion matrix tail-recursion