【发布时间】:2012-12-20 19:01:48
【问题描述】:
所以我试图解决这个问题的是给定一个数字网格,我希望在网格中有一个偶数的位置,通过这个位置,它会找到所有其他连接到它的偶数元素。
这张图片显示了我想要描述的内容。图片假设我有 6 的位置
这是我写的代码我几乎可以肯定它可以工作我只是想看看是否有任何方法可以提高效率
getLinksEven(grid,0,1);
static void getLinksEven(Server[][] grid, int k, int j)
{
try{
if(grid[k-1][j].isEven()&& !grid[k-1][j].isCracked()){
grid[k-1][j].setCracked(true);
getLinksEven(grid,k-1,j);
}
}
catch(ArrayIndexOutOfBoundsException a)
{
//do nothing
}
try{
if(grid[k][j-1].isEven()&& !grid[k][j-1].isCracked()){
grid[k][j-1].setCracked(true);
getLinksEven(grid,k,j-1);
}
}
catch(ArrayIndexOutOfBoundsException a)
{
//do nothing
}
try{
if(grid[k+1][j].isEven()&& !grid[k+1][j].isCracked()){
grid[k+1][j].setCracked(true);
getLinksEven(grid,k+1,j);
}
}
catch(ArrayIndexOutOfBoundsException a)
{
//do nothing
}
try{
if(grid[k][j+1].isEven()&& !grid[k][j+1].isCracked()){
grid[k][j+1].setCracked(true);
getLinksEven(grid,k,j+1);
}
}
catch(ArrayIndexOutOfBoundsException a)
{
//do nothing
}
}
【问题讨论】:
-
(我认为如果 6 在 1,2 而不是 0,1 会更直观)
-
@cwallenpoole,计算机科学中的几乎一切都使用基于 0 的索引。使用基于 1 的索引将不直观。
-
@SimonC 目前,他从左上角开始为 0,0,右下角为 2,2(这就是他使用 0,1 表示 6 的原因)。相反,右下角应该是 0,0。这将使 6 在第二个 x 索引 (1) 和第三个 y 索引 (2) 处。现在,您可以尝试争辩说它应该像我们定位像素而不是像我们定位坐标系那样来定位,但我不相信这一点。
-
@SimonC 另外,如果 0, 1 是 6,那么这意味着他正在订购他的数字 y,x。这显然违反了大多数标准做法。
-
@cwallenpoole,我的错,我以为你指的是索引的基数。使用 x 和 y 作为变量名会更直观,然后先传递 x。但是,我认为说 0,0 是否应该是右下角是有争议的。我明白为什么底部 left 可能更有意义。
标签: java performance recursion multidimensional-array