Android-矩阵中判断相邻值相等

发布于 2016-11-22 00:40:10 字数 260 浏览 1219 评论 2

请问在7*8的矩阵中怎么找出相邻的值相同的个数超过3个的情况呢 比如图中的 1 1 1 1 1 1 和 5 5 5 5 5 和 3 3 3 呢

请问在7*8的矩阵中怎么找出相邻的值相同的个数超过3个的情况呢 比如图中的 1 1 1 1 1 1 和 5 5 5 5 5 和 3 3 3 呢

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

清晨说ぺ晚安 2017-07-05 19:24:30

当作一个图,相邻且相同的格子看作是临接的,然后进行dfs搜索,连通分量中节点数目超过3个的即为所求,时间复杂度O(n * m)。

浮生未歇 2017-05-06 14:16:28

public void judge(ColorButton button, ColorButton[][] buttons) {
int posx = (int) button.getPos().x;
int posy = (int) button.getPos().y;
int state = button.getState();

boolean[][] check = new boolean[colls][rows];
ArrayList<ColorButton> colorButtons = new ArrayList<ColorButton>();

check(posx, posy, state, check, buttons);
for (int i = 0; i < colls; i++) {
for (int j = 0; j < rows; j++) {
if (check[i][j]) {
Gdx.app.log("debug", "get x=" + i + " y=" + j);
colorButtons.add(buttons[i][j]);
}
}
}

checkCompleted.onCompleted(colorButtons, button);
}

public ArrayList<ColorButton> checkHasOne(ColorButton[][] buttons)
{
for (int i = 0; i < colls; i++) {
for (int j = 0; j < rows; j++) {
int posx = (int) buttons[i][j].getPos().x;
int posy = (int) buttons[i][j].getPos().y;
int state = buttons[i][j].getState();

boolean[][] check = new boolean[colls][rows];
ArrayList<ColorButton> colorButtons = new ArrayList<ColorButton>();

check(posx, posy, state, check, buttons);
for (int i1 = 0; i1 < colls; i1++) {
for (int j1 = 0; j1 < rows; j1++) {
if (check[i1][j1]) {
Gdx.app.log("debug", "get x=" + i1 + " y=" + j1);
colorButtons.add(buttons[i1][j1]);
}
}
}

if (colorButtons.size() >= 3) {
return colorButtons;
}
}
}

return null;
}

public void check(int i, int j, int state, boolean[][] checkable,
ColorButton[][] data) {
// 上
if (j + 1 < rows) {
if (checkable[i][j + 1] == false) {
if (data[i][j + 1].getState() == state) {
checkable[i][j + 1] = true;
check(i, j + 1, state, checkable, data);
} else {
checkable[i][j + 1] = false;
}
}
}

// 下
if (j - 1 >= 0) {
if (checkable[i][j - 1] == false) {
if (data[i][j - 1].getState() == state) {
checkable[i][j - 1] = true;
check(i, j - 1, state, checkable, data);
} else {
checkable[i][j - 1] = false;
}
}
}
// 左
if (i - 1 >= 0) {
if (checkable[i - 1][j] == false) {
if (data[i - 1][j].getState() == state) {
checkable[i - 1][j] = true;
check(i - 1, j, state, checkable, data);
} else {
checkable[i - 1][j] = false;
}
}
}

// 右
if (i + 1 < colls) {
if (checkable[i + 1][j] == false) {
if (data[i + 1][j].getState() == state) {
checkable[i + 1][j] = true;
check(i + 1, j, state, checkable, data);
} else {
checkable[i + 1][j] = false;
}
}
}
}
}

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文