题意:在4 x 4的正方形中,#表示黑色,. 表示白色,在一个已知的有黑白两色的正方形中,要求只重新涂改一个方格,使得能够形成2 x 2的颜色相同的正方形。
分析:只要在任意的2 x 2中,黑色的个数为0,1,3,4任意一个就能成立。
AC代码:
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
int main()
{
char map[11][11];
int f=0,i,j,h,k,b;
for(i=1; i<=4; ++i)
for(j=1; j<=4; ++j)
scanf("%c", &map[i][j]);
for(i=1; i<=3; ++i)
for(j=1; j<=3; ++j)
{
b = 0;
for(h=0; h<=1; ++h)
for(k=0; k<=1; ++k)
if(map[i+h][j+k]=='#')
++b;
if(b>=3 || b<=1)
f = 1;
}
if(!f)
printf("NO\n");
else
printf("YES\n");
return 0;
}