检查特定点的二维数组中的邻居是否相同

时间:2014-10-26 23:37:54

标签: java

在从特定点检查一行中有多少个字符在所有方向上相同时,我遇到了一个问题。

例如,测试是:

assertEquals(2, game.getMaxSequence(0, 0, 0, 1, 'o'));
assertEquals(1, game.getMaxSequence(0, 0, 0, 1, 'x'));

我想出了如何从左上角开始做到这一点;然而,当涉及到特定点并增加参数时,我会丢失。

这是签名:

getMaxSequence(int row, int column, int dr, int dc, char symbol)

感谢您的帮助。

更新,我得到了

 public int getMaxSequence(int row, int column, int dr, int dc, char symbol) {
    int maxSequence = 0;
    char[] rows = new char[row];
    char[] columns = new char[column];


    for(int i = 0; i < rows.length; i++){
        for(int j = 0; j < dc; j++){
            for(int k = 0; k < dr; k++){

        if( rows[i] == symbol && columns[i] == symbol)
        {
            maxSequence++;//this should test to see if the index at this 
            //row is equal to what you pass it.
        }
        }
        }

}
    return maxSequence;
}

它还没有任何建议吗?

1 个答案:

答案 0 :(得分:0)

如果您在查看时遇到问题,这是一个简单的2D数组。索引从0n-1,其中n是数组的长度。

[0][0]            [0][n-1]
    ┌───┬───┬───┬───┐
    │   │   │   │   │
    ├───┼───┼───┼───┤
    │   │   │   │   │
    ├───┼───┼───┼───┤
    │   │   │   │   │
    ├───┼───┼───┼───┤
    │   │   │   │   │
    └───┴───┴───┴───┘
[n-1][0]          [n-1][n-1]

我们可以选择任意点(称之为p)并通过递增/递减索引向任何方向行走(假设我们必须保持在0n-1的范围内)

 [x--, y--]      [y--]       [x++, y--]
            ┌───┬───┬───┬───┐
            │   │   │   │   │
            ├───┼───┼───┼───┤
            │   │   │   │   │
   [x--]    ├───┼───┼───┼───┤   [x++]
            │   │ p │   │   │
            ├───┼───┼───┼───┤
            │   │   │   │   │
            └───┴───┴───┴───┘
 [x--, y++]      [y++]       [x++, y++]

一旦你可以想象它,这很容易转换为循环。

char[][] arr = ... ;

// increments are -1, 0 or 1
int xIncrement = ... ;
int yIncrement = ... ;

// starting coordinates
int x = pX;
int y = pY;

while( ( y < arr.length ) && ( x < arr[y].length ) ) {

    char c = arr[y][x];

    // do something with c

    x += xIncrement;
    y += yIncrement;
}

您可以选择更复杂的语法(例如for循环,++--等),但这是一个很好的基本形式。

在我的图表p对应于索引[2][1]。如果我想从p走到[0][n-1](“右上角”),则x增量为+1y增量为{}是-1