C++ 在2D数组中检查类似的数字?

C++ 在2D数组中检查类似的数字?,c++,arrays,algorithm,logic,C++,Arrays,Algorithm,Logic,我必须找出二维数组中对角线、列、行或三角形中的类似编号,如果找到相同编号,则条件为真,我想知道找到类似编号的位置,因为稍后,我想用标记编号(-1)替换这些位置 例如,这些是数组的实例,它们是true,因为它们在给定模式中具有相同的编号 实例:正确 001 001 001 100 010 001 000 111 000 000 100 110 000 010 110 实例:正确 001 001 001 100 010 001 000 111 000

我必须找出二维数组中对角线、列、行或三角形中的类似编号,如果找到相同编号,则条件为真,我想知道找到类似编号的位置,因为稍后,我想用标记编号(-1)替换这些位置

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

实例:正确

001

001

001
100

010

001
000

111

000
000

100

110
000

010

110
实例:正确

001

001

001
100

010

001
000

111

000
000

100

110
000

010

110
实例:正确

001

001

001
100

010

001
000

111

000
000

100

110
000

010

110
实例:正确

001

001

001
100

010

001
000

111

000
000

100

110
000

010

110
实例:正确

001

001

001
100

010

001
000

111

000
000

100

110
000

010

110
例如,这些是数组的实例,它们是false,因为它们在给定模式中没有相同的编号 实例:False

101

010

000
另一种可能的模式也是如此。我选择递归方法检查邻居,然后检查他们的邻居,但结果不同,它检查的是整体上相同的编号,如果在任何地方发现3个编号,则返回true。 这是我的代码片段

int-var=0;
bool CheckSame(int行、int列、int num)
{
如果(var==3)
返回true;//找到3个相同的数字
如果(变量!=3&&row==0)
return false;//已到达第一行,但未找到
if(arr[row][col]==num)
{
var++;
}
if(col==(MAX-1))//右角
{
if(arr[row][col]==arr[--row][col]==arr[row][col])
CheckSame(--row,col,num);//上限
CheckSame(行,--col,num);//左
CheckSame(--row,--col,num);//D-left
}
else如果(col==0)//左角
{
CheckSame(--row,col,num);//上限
CheckSame(行,列,数值);//右
CheckSame(--row,++col,num);//D-right
}
else//other
{
CheckSame(行,列,数值);//右
CheckSame(行,--col,num);//左
CheckSame(--row,col,num);//上限
CheckSame(--row,++col,num);//D-right
CheckSame(--row,--col,num);//D-left
}
}

通过使用递归和检查邻居,您走上了正确的道路。您需要去掉静态变量var,递归方法应该返回bool值。静态变量var与递归函数相结合会导致许多问题

或三角形
请解释你所说的“三角形”是什么意思。同时问一个问题。这不是一个博客网站。所谓三角形,我指的是二维数组中类似数字的直角三角形结构,它可以位于数组中的任何位置。@juanchopanza此代码在数组中找到相同的数字3次,但我想找到彼此相近的类似数字,即数组实例中提到的连续数字。我已更改了函数返回类型和静态变量。这段代码有效,它在数组中找到相同的数字3次,但我想找到彼此接近的类似数字,即连续的。