请教一个关于二维数组的算法
来源:百度知道 编辑:UC知道 时间:2024/06/01 03:20:20
int Array[6][9] =
{
{1,1,0,1,0,0,1,0,0},
{4,1,1,0,0,0,1,4,0},
{4,0,0,1,1,4,4,1,0},
{0,0,0,0,0,1,0,1,0},
{0,0,1,1,4,1,0,1,0},
{0,0,0,0,4,0,0,0,0},
};
算法越简单越好,能有具体代码更好,我会追加积分的,多谢各位~~
谢谢各位,忘记说清楚了,需要这5个数相连,顺序满足1,1,4,1,1,只能横竖相连,不能斜线相连,
如果仅仅对于6×9这么小的矩阵来说,可以直接循环寻找各个方向的匹配,源代码如下:
#include <cstdio>
#include <cstring>
using namespace std;
int Array[6][9] =
{
{1,1,0,1,0,0,1,0,0},
{4,1,1,0,0,0,1,4,0},
{4,0,0,1,1,4,4,1,0},
{0,0,0,0,0,1,0,1,0},
{0,0,1,1,4,1,0,1,0},
{0,0,0,0,4,0,0,0,0},
};
int mo[5] = {1,1,4,1,1};
bool check_right(int a,int b) //右方向
{
int i;
for (i=0;i<5;i++) if (b + i >= 9) return false;
else if (Array[a][b + i] != mo[i]) return false;
return true;
}
bool check_down(int a,int b) //下方向
{
int i;
for (i=0;i<5;i++) if (a + i >= 6) return false;
else if (Array[a + i][b] != mo[i]) return false;
return true;
}
bool check_left_down(int a,int b) //左下方向
{
int i;
for (i=0;i<5;i++) if (a + i >= 6 || b - i < 0) return false;
else if (Array[a + i][b - i] != mo[i]) retu