检查2D阵列中的相似数字?

时间:2015-01-18 08:15:17

标签: c++ arrays algorithm logic

我必须找出相似的没有。在2D数组中的对角线,列,行或三角形,如果相同的话。发现条件是真的,我想知道相似的位置。它们被发现的地方因为我以后想用我的标记号( - 1)替换这些位置。例如,这些是数组的实例,因为它们具有相同的no。在给定的模式

实例:正确

001

001

001

实例:正确

100

010

001

实例:正确

000

111

000

实例:正确

000

100

110

实例:正确

000

010

110

实例:错误

101

010

000

其他可能的模式也是如此。我选择递归方法检查邻居,然后检查他们的邻居,但结果是不同的,它正在检查相同的否。在整体上,如果它发现3没有。任何地方然后返回真实 这是我的代码片段

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 found

    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
    }
}

1 个答案:

答案 0 :(得分:0)

通过使用递归和检查邻居,您将走上正确的轨道。你需要摆脱你的静态变量var,你的递归方法应该返回一个bool值。静态变量var与递归函数结合引起了许多问题。