Educational Codeforces Round 26 B. Flag of Berland

xiaoxiao2021-02-28  111

新博客地址: vonsdite.cn

题目网址: Educational Codeforces Round 26 B. Flag of Berland

题意分析:

题意:

问这个旗子 满不满足一下条件 有三条线, 且三条线颜色不一样, 宽度, 高度, 都相等, 且平行每一条线只有一种颜色

思路:

暴力判断即可从行的角度来判断是否是三条线, 是否每条线等宽等高,是否颜色不一样从列的角度同行

代码:

#include <bits/stdc++.h> using namespace std; const int SIZE = 105; char flag[SIZE][SIZE]; int n, m; bool judge_hang() { int color[200]; memset(color, 0, sizeof(color)); int t1 = n / 3, t2 = n * 2 / 3, t3 = n; char tmpColor = flag[0][0]; color[(int)tmpColor] = 1; for (int i = 0; i < t1; ++i) { for (int j = 0; j < m; ++j) { if(flag[i][j] != tmpColor) { return false; } } } tmpColor = flag[t1][0]; if(color[(int)tmpColor]) return false; else { color[(int)tmpColor] = 1; for (int i = t1; i < t2; ++i) { for (int j = 0; j < m; ++j) { if(flag[i][j] != tmpColor) { return false; } } } } tmpColor = flag[t2][0]; if(color[(int)tmpColor]) return false; else { for (int i = t2; i < t3; ++i) { for (int j = 0; j < m; ++j) { if(flag[i][j] != tmpColor) { return false; } } } } return true; } bool judge_lie() { int color[200]; int t1 = m / 3, t2 = m * 2 / 3, t3 = m; memset(color, 0, sizeof(color)); char tmpColor = flag[0][0]; color[(int)tmpColor] = 1; for (int i = 0; i < t1; ++i) { for (int j = 0; j < n; ++j) { if(flag[j][i] != tmpColor) { return false; } } } tmpColor = flag[0][t1]; if(color[(int)tmpColor]) return false; else { color[(int)tmpColor] = 1; for (int i = t1; i < t2; ++i) { for (int j = 0; j < n; ++j) { if(flag[j][i] != tmpColor) { return false; } } } } tmpColor = flag[0][t2]; if(color[(int)tmpColor]) return false; else { color[(int)tmpColor] = 1; for (int i = t2; i < t3; ++i) { for (int j = 0; j < n; ++j) { if(flag[j][i] != tmpColor) { return false; } } } } return true; } int main(int argc, char const *argv[]) { scanf("%d %d", &n, &m); getchar(); for (int i = 0; i < n; ++i) { for (int j = 0; j < m; ++j) { scanf("%c", &flag[i][j]); } getchar(); } if(n % 3 && m % 3) { printf("NO\n"); return 0; } else { if(n % 3 == 0) { if(judge_hang()) { printf("YES\n"); return 0; } } if(m % 3 == 0) { if(judge_lie()) { printf("YES\n"); return 0; } } printf("NO\n"); } return 0; }
转载请注明原文地址: https://www.6miu.com/read-67389.html

最新回复(0)