应该在2D数组中对相邻单元进行计数的类在C#

问题描述

我已经用C#语言编写了一个类,该类对2D数组中的相邻活动单元进行计数。假设我有一个像这样的数组

int[,] array = new int[8,8]
{
    {3,3,3},{3,1,3}
};

在此数组中,0是死细胞,1是活细胞,3是鬼细胞。我的课堂应该计算并返回01的所有相邻活动单元格。对于这个数组,如果我要打印邻居,它应该返回

0 0 0 0 0 0 0 0
0 0 0 1 1 1 0 0
0 1 1 2 1 2 1 0
0 2 1 3 3 2 2 0
0 2 2 3 3 1 2 0
0 1 2 1 2 1 1 0
0 0 1 1 1 0 0 0
0 0 0 0 0 0 0 0

相反,它返回

0 0 0 0 0 0 0 0
0 0 0 1 1 1 0 0
0 1 1 1 1 1 1 0
0 1 1 1 1 1 1 0
0 1 1 1 1 1 1 0
0 1 1 1 1 1 1 0
0 0 1 1 1 0 0 0
0 0 0 0 0 0 0 0

对于任何给定的活动单元,似乎它最多只能统计1个邻居。这是我的班,用来计算周围的活细胞

public static int NeighbourCount(int[,] array,int x,int y)
{
    int neighours = 0;

    if (array[x,y] != 3)
    {
             if (array[x + 1,y    ] == 1) { neighours++; }
        else if (array[x + 1,y - 1] == 1) { neighours++; }
        else if (array[x,y - 1] == 1) { neighours++; }
        else if (array[x - 1,y    ] == 1) { neighours++; }
        else if (array[x - 1,y + 1] == 1) { neighours++; }
        else if (array[x,y + 1] == 1) { neighours++; }
        else if (array[x + 1,y + 1] == 1) { neighours++; }
    }

    return neighours;
}

我不知道为什么它只返回01。知道是什么原因引起的吗?问题可能是我如何打印班级退货?我这样打印

for (int i = 0; i < array.GetLength(0); i++)
{
    for (int j = 0; j < array.GetLength(0); j++)
    {
        Console.Write(NeighbourCount(array,i,j) + " ");
    }
    Console.WriteLine(string.Join(" ",ascii));
    ascii.Clear();
}

任何有关问题的解决方案或想法将不胜感激!谢谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)