The Little Elephant loves chess very much.
One day the Little Elephant and his friend decided to play chess. They've got the chess pieces but the board is a problem. They've got an 8 × 8 checkered board, each square is painted either black or white. The Little Elephant and his friend know that a proper chessboard doesn't have any side-adjacent cells with the same color and the upper left cell is white. To play chess, they want to make the board they have a proper chessboard. For that the friends can choose any row of the board and cyclically shift the cells of the chosen row, that is, put the last (rightmost) square on the first place in the row and shift the others one position to the right. You can run the described operation multiple times (or not run it at all).
For example, if the first line of the board looks like that "BBBBBBWW" (the white cells of the line are marked with character "W", the black cells are marked with character "B"), then after one cyclic shift it will look like that "WBBBBBBW".
Help the Little Elephant and his friend to find out whether they can use any number of the described operations to turn the board they have into a proper chessboard.
The input consists of exactly eight lines. Each line contains exactly eight characters "W" or "B" without any spaces: the j-th character in the i-th line stands for the color of the j-th cell of the i-th row of the elephants' board. Character "W" stands for the white color, character "B" stands for the black color.
Consider the rows of the board numbered from 1 to 8 from top to bottom, and the columns — from 1 to 8 from left to right. The given board can initially be a proper chessboard.
OutputIn a single line print "YES" (without the quotes), if we can make the board a proper chessboard and "NO" (without the quotes) otherwise.
ExamplesWBWBWBWB BWBWBWBW BWBWBWBW BWBWBWBW WBWBWBWB WBWBWBWB BWBWBWBW WBWBWBWB
YES
WBWBWBWB WBWBWBWB BBWBWWWB BWBWBWBW BWBWBWBW BWBWBWWW BWBWBWBW BWBWBWBW
NO
In the first sample you should shift the following lines one position to the right: the 3-rd, the 6-th, the 7-th and the 8-th.
In the second sample there is no way you can achieve the goal.
题意,下棋,每个位置相邻的都不能相等,每行可以循环(a【0】到a【7】,其余往前跳一个位置),想法是直接模拟,每行每行的判断能否满足题意,dic数组判断上,左,右三个相邻位置是否相等,如果能把8*8个位置都满足,则yes,否则no代码:
#include"iostream"
#include"algorithm"
#include"cstring"
using namespace std;
int dic[3][2]={0,1,-1,0,0,-1};
char a[10][10];
bool cheak(int x,int y)
{
if(x >= 0 && y>= 0 && x<8 &&y <8)
{
return 1;
}
return 0;
}
void swappp(int i)
{
char x=a[i][0];
for(int j = 1;j <= 7;j ++)
{
a[i][j-1]=a[i][j];
}
a[i][7]=x;
}
int main()
{
for(int i = 0;i < 8;i ++)
{
cin >> a[i];
}
for(int i = 0;i < 8;i ++)
{
int pl = 0;
for(int j = 0;j < 8;j ++)
{
int flag=0;
for(int k = 0;k < 3;k ++)
{
int I=i+dic[k][0];
int J=j+dic[k][1];
if(cheak(I,J))
{
if(a[I][J] == a[i][j])
{
// cout<<"I="<<I<<" J="<<J<<" i=="<<i<<" j=="<<j<<endl;
// cout<<a[I]<<endl;
// cout<<a[i]<<endl;
flag=1;
break;
}
}
}
if(flag)
{
swappp(i);
j=-1;
pl++;
if(pl == 8)
{
cout<<"NO"<<endl;
return 0;
}
}
}
}
cout<<"YES"<<endl;
return 0;
}