A. IQ Test

来源:互联网 发布:sd娃娃价格淘宝网 编辑:程序博客网 时间:2024/05/15 00:36

time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output

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.

Input

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.

Output

Print "YES" (without the quotes), if the test can be passed and "NO" (without the quotes) otherwise.

Sample test(s)
input
####.#..####....
output
YES
input
####....####....
output
NO
Note

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.



解题说明:此题的意思很明确,最多改变4*4区域内的一个值找出一个2*2区域,该区域内的值完全相同。虽然输入为字符串,但比较起来还是麻烦,可以转换为数字矩阵来做,“#”的位置标记为1,“.” 的位置标记为0,这样判断时只需要对一个2*2的矩形值求和,判断值是否等于2,如果等于2,证明有两黑两白,无法通过仅改变一块实现题目要求,其它数字满足题意。


#include <iostream>#include <cstdio>#include <cstdlib>#include <cmath>#include <cstring>#include <string>#include <algorithm>using namespace std;int main(){int a[4][4],i,j,k,s,flag;char c;flag=0;for(i=0;i<4;i++){for(j=0;j<4;j++){cin>>c;if(c=='#'){a[i][j]=1;}else{a[i][j]=0;}}}for(i=0;i<3;i++){for(j=0;j<3;j++){s=0;for(k=i;k<=i+1;k++){s=s+a[k][j]+a[k][j+1];}if(s!=2){cout<<"YES"<<endl;flag=1;goto ABC;}}}ABC:if(flag==0){cout<<"NO"<<endl;}return 0;}