解決它,這是我做的:
// Java the board game: find connected spaces
public class findConnectedCells
{
public static int findNumberConnected(int a, int b, int[][] z)
{
boolean canUp = (a - 1 >= 0);
boolean canDown = (a + 1 < z.length);
boolean canRight = (b + 1 < z[0].length);
boolean canLeft = (b - 1 >= 0);
int value = z[a][b];
int up = 0;
int down = 0;
int right = 0;
int left = 0;
z[a][b] = 2;
if (canUp && z[a-1][b] == value)
{
up = findNumberConnected(a-1,b,z);
}
if (canDown && z[a+1][b] == value)
{
down = findNumberConnected(a+1,b,z);
}
if (canLeft && z[a][b-1] == value)
{
left = findNumberConnected(a,b-1,z);
}
if (canRight && z[a][b+1] == value)
{
right = findNumberConnected(a,b+1,z);
}
return up + left + right + down + 1;
}
public static void main(String[] args) {
System.out.println("Finding connections");
int[][] z = new int[][]{
{ 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1 },
{ 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1 },
{ 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1 },
{ 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1 },
{ 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1 },
};
int x = 0;
int y = 0;
System.out.println("Number of connected cells from "+x+","+y+" is: "+findNumberConnected(x,y,z));
}
}
可以請你通過你的意思的「連接」細胞 – Mozzie
解釋什麼更多你的意思是最長的非循環路徑從當前單元格開始的長度,並只訪問具有相同價值的單元格?如果是這樣,它是否包括對角線運動?如果沒有,請澄清一下,因爲你對「連接」的定義很難理解。 –
對不起,我感到困惑。通過連接,我的意思是單元1)具有與原始值相同的值(在我的例子中,'1'),並且2)與它所連接的單元共享邊(對角線不構成連接)。 – Ladybro