【发布时间】:2016-11-15 07:09:27
【问题描述】:
我正在开发一个包含二维 16x32 字符数组的程序。我想要做的是,从这个数组中的给定元素开始,找到所有共享相同值的元素(在我的例子中是空格'')并且水平和/或垂直地相互链接。
我使用的方法将它找到的索引存储在另一个数组中,称为 toShow (public static int toShow[][] = new int[30][30];)。问题是这种方法似乎没有向右处理。奇怪的是,它似乎适用于其他方面......这是一个例子:
X1 123
31 1X
211 24
1X1 112X
111 12X34
111•2X32X
1X113X211
在这种情况下,从标记为 • 的元素开始,该方法应该存储每个 ' ' 字符和所有相邻编号...但结果如下:
1••
1••
1•
1•
1•
1•
然而,如果它从左下角开始,它通常会起作用,即使它确实必须向右转!
我不明白我的代码有什么问题...无论如何这里是奇怪的方法:
public static void getEmptySurrounding(int xcoord, int ycoord) {
if (toShow[xcoord][ycoord] == 1) {
return;
}
else {
toShow[xcoord][ycoord] = 1;
}
//DOWN
if((ycoord!=29) && ycoord + 1 < 16) {
if (board[xcoord][ycoord] == ' ') {
getEmptySurrounding(xcoord, ycoord + 1);
}
}
//RIGHT
if((xcoord!=15) && xcoord + 1 < 30) {
if (board[xcoord][ycoord] == ' ') {
getEmptySurrounding(xcoord + 1, ycoord);
}
}
//UP
if((ycoord!=0) && ycoord - 1 >= 0) {
if (board[xcoord][ycoord] == ' ') {
getEmptySurrounding(xcoord, ycoord - 1);
}
}
//LEFT
if((xcoord!=0) && xcoord - 1 >= 0) {
if (board[xcoord][ycoord] == ' ') {
getEmptySurrounding(xcoord - 1, ycoord);
}
}
}
谢谢!
【问题讨论】:
标签: java search recursion multidimensional-array nearest-neighbor