黑白棋(落子)绞尽脑汁 与老师模式强烈不兼容的思路(不推荐)
2017-11-28 12:20
176 查看
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)
{
flag=0;
break;
}
if(a[R][i]==N&& a[R][i-1]==0)
{
flag=0;
break;
}
if(a[R][i]==N&& a[R][i-1]!=N)
break;
if(i==7&& a[R][i]!=N)
{
flag=0;
break;
}
}
}
else
flag=0;
}
if(flag==0)
{
flag=1;
if(R>=1){
for(i=R-1;i>=0;i--)//shang
{
if(a[i][C]==0)
{
flag=0;
break;
}
if(a[i][C]==N&& a[i+1][C]==0 )
{
flag=0;
break;
}
if(a[i][C]==N&& a[i+1][C]!=N)
break;
if(i==0&& a[i][C]!=N)
{
flag=0;
break;
}
}
}
else
flag=0;
}
if(flag==0)
{
flag=1;
if(R<=6){
for(i=R+1;i<8;i++)//xia
{
if(a[i][C]==0)
{
flag=0;
break;
}
if(a[i][C]==N&& a[i-1][C]==0)
{
flag=0;
break;
}
if(a[i][C]==N&& a[i-1][C]!=N)
break;
if(i==7&& a[i][C]!=N)
{
flag=0;
break;
}
}
}
else
flag=0;
}
if(flag==0)
{
flag=1;
if(R>=1&& C<=6){
for(i=R-1;i>=0;i--)//youshang
{
if(a[i][C+R-i]==0&& C+R-i<8)
{
flag=0;
break;
}
if(a[i][C+R-i]==N&& a[i+1][C+R-i-1]==0 && C+R-i<8)
{
flag=0;
break;
}
if(a[i][C+R-i]==N&& a[i+1][C+R-i-1]!=N && C+R-i<8)
break;
}
}
else
flag=0;
}
if(flag==0)
{
flag=1;
if(R<=6&& C>=1){
for(i=R+1;i<8;i++)//zuoxia
{
if(a[i][C+R-i]==0&& C+R-i>=0)
{
flag=0;
break;
}
if(a[i][C+R-i]==N&& a[i-1][C+R-i+1]==0 && C+R-i>=0)
{
flag=0;
break;
}
if(a[i][C+R-i]==N&& a[i-1][C+R-i+1]!=N && C+R-i>=0)
break;
}
}
else
flag=0;
}
if(flag==0)
{
flag=1;
if(R>=1&& C>=1)
{
for(i=R-1;i>=0;i--)//zuoshang
{
if(a[i][C+i-R]==0&& C+i-R>=0)
{
flag=0;
break;
}
if(a[i][C+i-R]==N&& a[i+1][C+i-R+1]==0 && C+i-R>=0)
{
flag=0;
break;
}
if(a[i][C+i-R]==N&& a[i+1][C+i-R+1]!=N && C+i-R>=0)
break;
}
}
else
flag=0;
}
if(flag==0)
{
flag=1;
if(R<=6&& C<=6)
{
for(i=R+1;i<8;i++)//youxia
{
if(a[i][C+i-R]==0&& C+i-R<8)
{
flag=0;
break;
}
if(a[i][C+i-R]==N&& a[i-1][C+i-R-1]==0 && C+i-R<8)
{
flag=0;
break;
}
if(a[i][C+i-R]==N&& a[i-1][C+i-R-1]!=N && C+i-R<8)
break;
}
}
else
flag=0;
}
}
if(flag==1)
printf("Yes\n");
else
printf("No\n");
return0;
}
void init()
{
inti,j;
for(i=0;i<8;i++)
{
for(j=0;j<8;j++)
{
scanf("%d",&a[i][j]);
}
}
scanf("%d%d%d",&R,&C,&N);
}
相关文章推荐
- 强烈推荐敏捷软件开发:原则、模式与实践(C#版 英文注释版)
- BP神经网络的详细解析:思路清晰强烈推荐
- 强烈推荐:创业起步 八种赢利模式
- 单例模式强烈推荐的方式:利用静态构造函数
- 强烈推荐NET设计规范:约定、惯用法与模式(第2版)(附光盘)
- 设计模式视频讲座----强烈推荐
- 强烈推荐:创业起步 八种赢利模式
- 【强烈推荐】 超漂亮的仿腾讯弹出层效果(兼容主流浏览器<转>;
- [转帖][强烈推荐]网页表格(Table/GridView)标题栏和列冻结(跨浏览器兼容)
- 【强烈推荐】 超漂亮的仿腾讯弹出层效果(兼容主流浏览器<转>;
- 穆利堂强烈推荐商业模式新生代.ppt
- 强烈推荐:程序员接私活那点事
- 不兼容模式的协调--适配器模式(Adapter)
- Golang实现web api接口调用及web数据抓取[get post模式] 推荐
- 机器学习入门好文,强烈推荐
- html 设置IE兼容模式
- 打开Voice Over时,CATextLayer的string对象兼容NSString和NSAttributedString导致的Crash(二解决思路3)
- 【分享】让网站在IE8的兼容模式下运行
- 20160809下午14:00公司断网处理过程(网络架构VSS模式) 推荐
- Android软键盘显示模式及打开和关闭方式(推荐)