【问题标题】:Finding the correct combination in a 2D array after finding the first digit找到第一个数字后在二维数组中找到正确的组合
【发布时间】:2017-02-06 18:46:52
【问题描述】:

我很难对此进行编码...我想在 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


        }
    }
} 

请记住,输入的数字可以是任意长度,并且只有在我得到整数时才会返回方向。我真的很迷茫,感谢任何建议。

【问题讨论】:

  • 尝试先编码一个可以在给定方向遍历表的类。例如,自上而下或自下而上。然后,您可以将所有八个可能的方向枚举为该遍历器,并为每个遍历器检查您的序列。

标签: java arrays search multidimensional-array


【解决方案1】:
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] 的存在和索引号的情况,并且在不讨论您的原因和最终结果之前,请不要验证我的答案预期的组合仍然有点模糊,很乐意提供帮助

【讨论】:

    【解决方案2】:

    我认为这里的问题是你没有看到更大的图景。下面是你的起点,清理了一下。 现在我要做的是编写一个方法,从各个方向检查表格的组合长度。检查北基本上是在做网格[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);
                }
            }
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-29
      • 1970-01-01
      • 2012-01-29
      • 2022-10-13
      • 1970-01-01
      • 2018-08-13
      • 2019-06-15
      • 1970-01-01
      相关资源
      最近更新 更多