在Array中查找附近的值

时间:2016-02-27 13:22:55

标签: c# multidimensional-array jagged-arrays

(我可以使用Jagged或Multidimensional数组,我只是引用一个Jagged数字来解决这个问题)

我有一个Jagged Array [] [],其值与此类似

 1 3 1 1 1
 1 3 3 3 1
 1 1 2 1 1
 1 3 1 3 1
 1 1 1 1 1

现在我想找到2旁边的值,所以5 3和3 1我将从哪里开始为我的生活我甚至不知道从哪里开始。

3 个答案:

答案 0 :(得分:1)

如果2位于ar [i] [j],那么您可以使用2搜索相邻位置,如下所示:

for (int x = i - 1; x <= i + 1; x++) {    
    for (int y = j - 1; y <= j + 1; y++) {
        if (x == i && y == j)
           continue; // skip the position where your 2 is
        // do your logic here - count the value at ar[x][y]
    }
}

还要小心处理数组的边框(不要尝试访问数组外的元素)。

我希望这会指出你正确的方向。

答案 1 :(得分:1)

如果使用Linq:

这样的话
    static void Main(string[] args)
    {
        int[,] array2D = new int[,]{
        { 1, 3, 1, 1, 1 },
        { 1, 3, 3, 3, 1 },
        { 1, 1, 2, 1, 1 },
        { 1, 3, 1, 3, 1 },
        { 1, 1, 1, 1, 1 }};
        var resultList = GetNearbyValues(array2D, 2, 2);
    }

    private static List<int> GetNearbyValues(int[,] array2D, int i, int j)
    {
        var values = from x in Enumerable.Range(i - 1, i + 1)
                     from y in Enumerable.Range(j - 1, j + 1)
                     // make sure x and y are all positive
                     where x >= 0 && y >= 0 && (x != i | y != j)
                     select array2D[x, y];
        return values.Cast<int>().ToList();
    }

答案 2 :(得分:0)

for (int x = i - 1; x <= i + 1; x++) 
{

    for (int y = j - 1; y <= j + 1; y++) 
    {

        if (x == i && y == j)
        // do something here
    }
}

或者你可以使用2 while循环它会产生相同的效果