解决它,这是我做的:
// 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