我必须找出相似的没有。在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
}
}
答案 0 :(得分:0)
通过使用递归和检查邻居,您将走上正确的轨道。你需要摆脱你的静态变量var,你的递归方法应该返回一个bool值。静态变量var与递归函数结合引起了许多问题。