检查 2D 数组中的相似数字
Checking for similar numbers in the 2D array?
我必须找出类似的编号。 在 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 与递归函数结合使用会导致许多问题。
相关文章:
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- 检查输入是否不是整数或数字
- 如何(从固定列表中)选择一个数字序列,该序列将与目标数字相加
- 模板元程序查找相似的连续类型名称
- 如何用数字处理log(0)
- 最高有效数字侧的第N位
- 如何获取一个数字的前3位
- 查找最接近的大于当前数字的数字的索引
- 找到两对数字,使它们的乘积的绝对差最小化
- 我想做一个彼此不同但重复出现的数字
- 将数字转换为字母(例如:123 转换为一二三)
- C++如何计算用户输入的数字中的偶数位数
- 如何在C++中确定文本文件中的元素是字符还是数字
- 打印数字图案
- C++问题:用户认为数字1-100,程序提出问题不超过6次即可得到答案。无法正确
- 如何检查一个c++字符串中有多少相同的字符/数字
- 在序列中查找相似的数字并记录最大连续连胜
- 检查 2D 数组中的相似数字
- 这看起来很相似,但与旧问题不同.给定一个大小为 n 的数组(允许重复的数字),找到缺少的 2 个数字