D - Little Elephant and Chess (模拟)

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.


Input

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.

Output

In a single line print "YES" (without the quotes), if we can make the board a proper chessboard and "NO" (without the quotes) otherwise.

Examples
Input
WBWBWBWB
BWBWBWBW
BWBWBWBW
BWBWBWBW
WBWBWBWB
WBWBWBWB
BWBWBWBW
WBWBWBWB
Output
YES
Input
WBWBWBWB
WBWBWBWB
BBWBWWWB
BWBWBWBW
BWBWBWBW
BWBWBWWW
BWBWBWBW
BWBWBWBW
Output
NO
Note

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;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值