解题说明:此题的意思很明确,就是B四周不能有B,W四周不能有W。通过观察可以发现,只要WW,BB不连续出现,总能够通过移动把棋盘变成需要的状态,第一个样例就是如此。发现了这一点,题目得到了简化,就是判断连续两个字符是否相同而已,注意这里的每一行更应该看成是环状的,要考虑首尾相接的情况,这也就是s[8]=s[0]的原因
#include<cstdio>
#include<iostream>
#include<cstring>
#include<cmath>
using namespace std;
int main()
{
int i,j;
int flag;
char s[10];
flag=false;
for(i=0;i<8;i++)
{
scanf("%s",&s);
s[8]=s[0];
for(j=0;j<=7;j++)
{
if(s[j]==s[j+1])
{
flag=true;
break;
}
}
}
if(flag==true)
{
printf("NO\n");
}
else
{
printf("YES\n");
}
return 0;
}