#include <iostream>
using namespace std;
const int MAXN = 10; // 方块最大数量
const int MAXM = 10; // 方块最大数量
int n, m; // 方块数量
int a[MAXN][MAXM]; // 存储方块
bool vis[MAXN][MAXM]; // 标记方块是否被访问过
// 判断两个方块是否可以被消除
bool can_remove(int x1, int y1, int x2, int y2) {
if (a[x1][y1] != a[x2][y2]) {
return false; // 两个方块不相同,不能消除
}
if (x1 == x2 && y1 == y2) {
return false; // 同一个方块,不能消除
}
if (x1 == x2) {
// 横向连通,检查中间是否有障碍物
bool flag = true;
for (int i = min(y1, y2) + 1; i < max(y1, y2); i++) {
if (a[x1][i] != 0) {
flag = false;
break;
}
}
return flag;
} else if (y1 =