2d数组的相邻值(java)

时间:2017-08-28 17:12:38

标签: java arrays

嗨我试图让所有邻居或相邻的值相等,在二维数组中我搜索了很多,但答案对我来说不够 例如:

scalaOrganization := "org.typelevel"
scalaVersion := "2.12.3-bin-typelevel-4"
libraryDependencies += "com.chuusai" %% "shapeless" % "2.3.2"

总相邻:4

`|1|0|1|`
`|0|1|1|`
`|0|1|0|`

2 个答案:

答案 0 :(得分:0)

这是一个有效的解决方案:

    int[][] array = {{1, 0, 1}, {0, 1, 1}, {0, 1, 0}};

    int rowLimit = array.length;
    int columnLimit = array[0].length;

    int actualValue;
    int sum = 0;

    for(int i = 0; i < rowLimit; i++) {
        for(int j = 0; j < columnLimit; j++) {
            actualValue = array[i][j];
                for(int x = Math.max(0, i-1); x <= Math.min(i+1, rowLimit-1); x++){
                    for(int y = Math.max(0, j-1); y <= Math.min(j+1, columnLimit-1); y++){
                        if(x != i || y != j){
                            if(actualValue == array[x][y] && (Math.abs(x-i) + abs(y-j) == 1))
                                sum++;
                        }
                    }

            }
        }
    }

    System.out.println("Total adjacent: " + sum/2);

答案 1 :(得分:0)

这是另一种算法(在我看来比你的更简单):

g++ `pkg-config --cflags --libs gtk+-2.0`