In the city of Ultima Thule job applicants are often offered an IQ test.
The test is as follows: the person gets a piece of squared paper with a 4 × 4 square painted on it. Some of the square's cells are painted black and others are painted white. Your task is to repaint at most one cell the other color so that the picture has a 2 × 2 square, completely consisting of cells of the same color. If the initial picture already has such a square, the person should just say so and the test will be completed.
Your task is to write a program that determines whether it is possible to pass the test. You cannot pass the test if either repainting any cell or no action doesn't result in a 2 × 2 square, consisting of cells of the same color.
Four lines contain four characters each: the j-th character of the i-th line equals "." if the cell in the i-th row and the j-th column of the square is painted white, and "#", if the cell is black.
Print "YES" (without the quotes), if the test can be passed and "NO" (without the quotes) otherwise.
#### .#.. #### ....
YES
#### .... #### ....
NO
In the first test sample it is enough to repaint the first cell in the second row. After such repainting the required 2 × 2 square is on the intersection of the 1-st and 2-nd row with the 1-st and 2-nd column.
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cctype>
using namespace std;
#define MAXLen (4+10)
char a[MAXLen][MAXLen];
bool flag=0;
int main()
{
for (int i=1;i<=4;i++) scanf("%s",a[i]+1);
for (int i=1;i<4;i++)
for (int j=1;j<4;j++)
{
if (a[i][j]==a[i][j+1]&&a[i][j]==a[i+1][j]) flag=1;
if (a[i][j]==a[i][j+1]&&a[i][j]==a[i+1][j+1]) flag=1;
if (a[i][j]==a[i+1][j]&&a[i][j]==a[i+1][j+1]) flag=1;
if (a[i+1][j]==a[i][j+1]&&a[i+1][j]==a[i+1][j+1]) flag=1;
}
if (flag) printf("YES\n");
else printf("NO\n");
return 0;
}

本文介绍了一款用于解决4x4格子纸上的IQ测试题目的程序。该程序能够判断是否可以通过改变一个格子的颜色形成2x2的同色方块。通过枚举检查是否有符合条件的3个相邻格子来确定测试能否通过。

被折叠的 条评论
为什么被折叠?



