当前位置: 首页 > 知识库问答 >
问题:

检测矩阵中的相邻元素(SameGame)

弓明亮
2023-03-14

SameGame示例

让我们以一个SameGame板为例。

如果两个块有一个共同的边,则它们是相邻的。组是由至少两个块组成的集合,所有块都是相同类型的,并且每个块都与组的至少一个其他成员相邻。当鼠标悬停在作为组的一部分的块上时,整个组应在视觉上突出显示。

举个矩阵的例子:

    public void initGrid() {
    int i,j;
    for (i=0; i<row; i++) {
        for (j=0; j<col; j++) {
        int randomBlock=this.random.nextInt(3);
            switch(randomBlock) {
                case 0:
                    charTab[i][j]='R';
                    break;
                case 1:
                    charTab[i][j]='V';
                    break;
                case 2:
                    charTab[i][j]='B';
                    break;
            }
            this.blockTab[i][j] = new Block(j, i, charTab[i][j]);
        }
    }
}

鼠标悬停怎么找一套?

我想过递归,但老实说,我不知道该怎么做。BFS似乎是我可以做的事情,但对于这样一个“简单”的事情来说,它似乎太复杂了。

谢谢你的帮助,对不起!

共有1个答案

周飞语
2023-03-14

考虑数组的一个简单情况:

|---|---|---|
| 1 | 2 | 3 |
|---|---|---|
| 4 | 5 | 6 |
|---|---|---|
| 7 | 8 | 9 |
|---|---|---|

二维阵列可以看作是一个连续的阵列。

[1, 2, 3][4, 5, 6][7, 8, 9]

本质上与

[1, 2, 3, 4, 5, 6, 7, 8, 9]

请注意,如果我们将元素5索引变量视为i,那么它左边的元素将处于索引位置

i - 1

它左边的元素将处于索引位置

i + 1

其北面的元素将处于索引位置

i - 3

其南面的元素将处于索引位置

i + 3

如果这些结果中的任何一个是<0>arraylengts-1,则不存在这样的相邻点。

 类似资料:
  • 在matlab中,我有一个非负数项的矩阵a。见以下一条: 我想找到所有零元素的邻居,除了零元素。这意味着我想在向量v中存储a(1,1),a(2,5),a(3,1),a(3,6),a(4,5)和a(5,1)的邻居,如果这些邻居中的一个是零,那么我就不存储它。 所谓元素(i,j)的邻居,是指离(i,j)远一个元素的元素,即A(i,j+1)、A(i,j-1)、A(i-1,j)、A(i-1,j-1)、A(

  • 在R中,我可以在矩阵和(共形)向量之间进行分段乘法,例如: 矩阵的每一行都与相应的向量元素相乘。我也可以对维度大于2的数组做同样的事情: 同样,每一行都与相应的向量元素相乘。我能为3d阵列和2d矩阵做类似的事情吗?我只想让数组中的每个子矩阵都按元素乘以一个矩阵。

  • 我看到一个问题,要求它找到所有相邻子阵列的最小值。例如,对于数组A=[1,2,3],答案将是一个包含[1,2,3,1,2,1]的数组B<怎么做- 我所做的是,构建了一个段树,但是它不包含所有连续子数组的最小值。 我也不认为我可以使用“脱钩”,因为我不必在特定长度的子数组中找到最小值。 那么,我如何获得所有连续子阵列(B阵列)的最小值?

  • 问题内容: 我对图和邻接矩阵感到困惑。我正在为 一个班级做作业,我有一个节点的文本文件和一个边的文本文件,我必须 阅读它们的每一个并将它们制成一个图,然后可以在该图上执行 操作,例如确定图是否为连接,找到最小的 生成树,遍历并找到路径。但是我之前从未使用过图形 ,并且整个过程让我很困惑,我想知道 是否有人可以帮助我解释其中的一些内容。 首先,我是否要自己建立一个图(也许有节点和边类?) ,然后从中

  • 我使用if-else检查numpy矩阵的索引i,i处的元素是否为0 得到了错误值错误:数组的真值有多个元素是含糊不清的。使用a.any()或a.all()对此有任何解决办法吗?

  • 这是我的审判,但它没有涵盖一切,也在重复,我做错了什么?