检查 2D 数组中的相似数字

Checking for similar numbers in the 2D array?

本文关键字:相似 数字 2D 数组 检查      更新时间:2023-10-16

我必须找出类似的编号。 在 2D 数组中的对角线、列、行或三角形中,如果找到相同的编号,则条件为真,我想知道类似编号的位置。 找到它们的地方,因为以后我想用我的标记号替换这些位置。-1).

例如,这些是数组的实例,它们是真的,因为它们在给定的模式中具有相同的 no。

实例:真

001
001
001

实例:真

100
010
001

实例:真

000
111
000

实例:真

000
100
110

实例:真

000
010
110

例如,这些是数组的实例,它们是的,因为它们没有相同的 no。 在给定的模式中实例:假

101
010
000

另一种可能的模式也是如此。我选择递归方法来检查邻居,然后检查它们的邻居,但结果不同,它正在检查相同的否。总的来说,如果它找到了 3 个没有。在任何地方,然后返回 true。这是我的代码片段

    int var=0;
    bool CheckSame(int row,int col,int num)
    {
        if (var==3)
            return true;// 3 same numbers found
        if (var!=3 && row==0)
            return false;//reached first row but didn't find
        if (arr[row][col]==num)
        {
            var++;
        }
        if (col==(MAX-1))//right corner
        {
            if (arr[row][col]==arr[--row][col]==arr[row][col])
                CheckSame(--row,col,num);//upper
            CheckSame(row,--col,num);//left
            CheckSame(--row,--col,num);//D-left
        }
        else if (col==0)//left corner
        {
            CheckSame(--row,col,num);//upper
            CheckSame(row,++col,num);//right
            CheckSame(--row,++col,num);//D-right
        }
        else//other
        {
            CheckSame(row,++col,num);//right
            CheckSame(row,--col,num);//left
            CheckSame(--row,col,num);//upper
            CheckSame(--row,++col,num);//D-right
            CheckSame(--row,--col,num);//D-left
        }
    }

通过使用递归并检查邻居,您正在走上正确的轨道。你需要摆脱你的静态变量var,你的递归方法应该返回一个布尔值。静态变量 var 与递归函数结合使用会导致许多问题。