A. Pasha and Pixels (水题 暴力)
题意:
有一个n×m的矩阵,最开始所有的格子都是白色的。
一个人按照某种顺序将格子涂成黑的,如果某个格子已经是黑的则忽略。在涂色的过程中如果出现了2×2的全黑小方阵,则游戏失败。
输出游戏是在哪一步失败的,或者没有失败。
分析:
直接用一个矩阵模拟即可,每次给一个格子涂完色,判断一下包含这个格子的四个2×2方阵是否全威黑色,注意坐标不要出界。
1 #include <iostream> 2 #include <cstdio> 3 4 const int maxn = 1000 + 10; 5 int dx[] = {-1, -1, 1, 1}; 6 int dy[] = {1, -1, -1 ,1}; 7 int map[maxn][maxn]; 8 int n, m, k; 9 10 bool inside(int x, int y) { return x>=1 && x<=n && y>=1 && y<=m; } 11 12 bool judge(int x, int y) 13 { 14 for(int i = 0; i < 4; ++i) 15 { 16 int xx = x + dx[i]; 17 int yy = y + dy[i]; 18 if(inside(xx, yy) && map[xx][yy] 19 && inside(x, yy) && map[x][yy] 20 && inside(xx, y) && map[xx][y]) 21 return true; 22 } 23 24 return false; 25 } 26 27 int main() 28 { 29 //freopen("in.txt", "r", stdin); 30 31 scanf("%d%d%d", &n, &m, &k); 32 33 for(int i = 1; i <= k; ++i) 34 { 35 int x, y; 36 scanf("%d%d", &x, &y); 37 map[x][y] = 1; 38 if(judge(x, y)) { printf("%d", i); return 0; } 39 } 40 41 puts("0"); 42 43 return 0; 44 }