题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5926
一个连连看游戏,判断第一次是否有可以消除的方块。
6个for循环,分别判断4个最外面的边和里面的相邻的情况就行了
#pragma GCC optimize(2) #include<stdio.h> #include<algorithm> #include<string.h> #include<queue> using namespace std; const int maxn = 500; const int inf = 0x3f3f3f3f; typedef long long ll; int mp[35][35]; int n, m; int t1 = 1; int main() { //freopen("C://input.txt", "r", stdin); int t; scanf("%d", &t); while (t--) { int flag = 0; memset(mp, 0, sizeof(mp)); scanf("%d%d", &n, &m); for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { scanf("%d", &mp[i][j]); } } for (int i = 1; i <= m; i++) //横 { for (int j = i + 1; j <= m; j++) { if (mp[1][i] == mp[1][j]) { flag = 1; } } } for (int i = 1; i <= m; i++) //横 { for (int j = i + 1; j <= m; j++) { if (mp[n][i] == mp[n][j]) { flag = 1; } } } for (int i = 1; i <= n; i++) //竖 { for (int j = i + 1; j <= n; j++) { if (mp[i][1] == mp[j][1]) { flag = 1; } } } for (int i = 1; i <= n; i++) { for (int j = i + 1; j <= n; j++) { if (mp[i][m] == mp[j][m]) { flag = 1; } } } for (int i = 1; i <= n; i++) { for (int j = 1; j <= m - 1; j++) { if (mp[i][j] == mp[i][j + 1]) { flag = 1; } } } for (int i = 1; i <= m; i++) { for (int j = 1; j <= n - 1; j++) { if (mp[j][i] == mp[j+1][i]) { flag = 1; } } } if (flag) { printf("Case #%d: Yes\n", t1++); } else { printf("Case #%d: No\n", t1++); } } return 0; }
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交