Problem D
黑白棋(落子)
时限:1000ms 内存限制:10000K 总时限:3000ms
描述:
经过前3题的热身相信大家已经对黑白棋有了一定的认识,下面我们来编写稍微复杂一点的模块。黑白棋并不像5子棋或者围棋一样可以在任意空白处下子,那么检测某个位置是否可以下子(如对规则还不是很了解,请参照前3题的规则介绍),也是我们黑白棋AI算法会经常调用的模块。下面需要同学们编写这一检测模块。
输入:
首先读入的是当前棋盘的状态,共8行,每行8个数字,1代表白棋,2代表黑棋,0代表为空格(未下子)。第9行有3个数字R C N,分别代表给定点的行、列还有所要下子的颜色。
输出:
输出对于这个位置是否可以落子,可以输出Yes,不可以则输出No.
输入样例:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 2 0 2 0 0 0 0 1 2 2 2 0 0 0 0 0 2 1 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 4 1
输出样例:
Yes
来源:
#include<stdio.h>
int R,C,N;
int a[8][8];
void init();
int main()
{
intflag=1;
inti;
init();
if(a[R][C]==0)
{
if(C>=1){
for(i=C-1;i>=0;i--)//zuo
{
if(a[R][i]==0)
{
flag=0;
break;
}
if(a[R][i]==N&& a[R][i+1]==0 && i+1<8)
{
flag=0;
break;
}
if(a[R][i]==N&& a[R][i+1]!=N)
break;
if(i==0&& a[R][i]!=N)
{
flag=0;
break;
}
}
}
else
flag=0;
if(flag==0)
{
flag=1;
if(C<=6){
for(i=C+1;i<8;i++)//you
{
if(a[R][i]==0)
{