找到第一个数字后,在2D数组中找到正确的组合

时间:2017-02-06 18:46:53

标签: java arrays search multidimensional-array

我很难对此进行编码...我想在2D网格中找到某种数字组合。该组合已知并存储在ArrayList中。问题在于,组合可以从8个基本方向中的任何一个(以0到7的整数存储)完成,就像单词搜索拼图一样。我试图找到那个方向,但说实话,我不知道从哪里开始...

[...] //This is only a part of the bigger code I'm working on

for (i = 0; i < grid.length; ++i){
    for (j = 0; j < grid[i].length; ++j){
        if (grid[i][j] == digits.get(0){   //Here I find the 1st digit of my number


        }
    }
} 

请记住,输入的数字可以是任意长度,只有在我得到整数时才返回方向。我真的很失落,任何建议都表示赞赏,谢谢。

2 个答案:

答案 0 :(得分:0)

for (i = 0; i < grid.length; ++i){
for (j = 0; j < grid[i].length; ++j){
    int gridItemIndex = digits.indexOf( grid[i][j] )
    {
        if( gridItemIndex != -1 )
        {
             // now you are sure grid[i][j] IS IN LIST
             // gridItemIndex tells THE INDEX NUMBER OF grid[i][j] in ArrayList(digits)
        }
    }
}  

我希望这能接近你想说的话吗?

int gridItemIndex = digits.indexOf( grid[i][j] )
{
    if( gridItemIndex != -1 )
    {
         // now you are sure grid[i][j] IS IN LIST
         // gridItemIndex tells THE INDEX NUMBER OF grid[i][j] in ArrayList(digits)
    }
}

处理你试图找到数字ArrayList中grid [i] [j]的存在和索引号的情况,并且在不讨论为什么和最终结果之前请不要回答我的答案您的预期组合仍然有点模糊,很乐意提供帮助

答案 1 :(得分:0)

我认为这里的问题是你没有看到更大的图景。以下是你的起点,清理了一下。 现在,我要做的是编写一个方法,在每个方向上检查表的组合长度。检查北方基本上是做网格[startingX] [startingY--]。如果您将该逻辑应用于每个方向并考虑到超出范围的错误,您将立即解决它。

//2D array
    int[][] grid = new int[25][25];
    //Your combination
    List<Integer> combination = new ArrayList<>();

    //Loop over the 2D array to find your starting point
    for (int i = 0; i<25; i++) {
        for (int j = 0; j<25; j++) {

            if (grid[i][j] == combination.get(0)) { //If we find the first element of your combination
                //Check in all cardinal directions
                checkDirections(i, j);
            }
        }
    }