有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在矩阵中查找单元格的相邻元素

我有一个25行13列的矩阵:

A       B       C       D       E       F       G       
1 - - - - - - - - - - - 1 - - - - - - - - - - - 1 
| x x x x x x x x x x x x x x x x x x x x x x x | 
| x x x 1 - - - - - - - 1 - - - - - - - 1 x x x | 
| x x x | x x x x x x x x x x x x x x x | x x x | 
| x x x | x x x 1 - - - 1 - - - 1 x x x | x x x | 
| x x x | x x x | x x x x x x x | x x x | x x x | 
1 x x x 1 x x x 1 x x x x x x x 1 x x x 1 x x x 1 
| x x x | x x x | x x x x x x x | x x x | x x x | 
| x x x | x x x 1 - - - 1 - - - 1 x x x | x x x | 
| x x x | x x x x x x x x x x x x x x x | x x x | 
| x x x 1 - - - - - - - 1 - - - - - - - 1 x x x | 
| x x x x x x x x x x x x x x x x x x x x x x x | 
1 - - - - - - - - - - - 1 - - - - - - - - - - - 1

行和列被7分开,我将字母A-G放在顶部,以便更清晰可见。在矩阵中,我们有“1”。符号“1”表示从游戏https://en.wikipedia.org/wiki/Nine_men%27s_morris放置元素的可能位置。我想知道,如果有人给我一个值为“1”的单元格的(x,y),我怎么能找到所有相邻单元格的坐标列表

我试着找出单元格是否在内部矩形中,然后根据Ox和Oy直接计算偏移量,但没有成功


共 (1) 个答案

  1. # 1 楼答案

    一般来说,为了找到相邻的单元,我们可以使用以下结构:

    topLeft  = array[ x - 1 ][ y - 1 ]
    top      = array[ x     ][ y - 1 ]
    topRight = array[ x + 1 ][ y - 1 ]
    
    midLeft  = array[ x - 1 ][ y     ]
    midRight = array[ x + 1 ][ y     ]
    
    botLeft  = array[ x - 1 ][ y + 1 ]
    bot      = array[ x     ][ y + 1 ]
    botRight = array[ x + 1 ][ y + 1 ]
    

    请注意,上述代码可应用于没有边界的单元格。否则,您将超出数组索引范围

    这是所有可能相邻单元的列表。 现在还不清楚你想对这些相邻的细胞做什么,所以这是我现在能提供的最多的信息

    回答你的问题“如何找到所有相邻单元格的坐标列表?”

    使用上述结构,可以将坐标存储在向量中,例如:

    struct cords{
    int cordX;
    int cordY;
    };
    

    然后,一旦使用上述方法找到相邻的单元格,就可以执行以下操作

    cords c;
    c.cordX = ...;
    c.cordY=...;
    vector<cords> coordinates;
    coordinates.push_back(c);