黑白棋(落子)
来源:互联网 发布:南京大学人工智能专业 编辑:程序博客网 时间:2024/04/29 01:00
黑白棋(落子)
描述:
经过前3题的热身相信大家已经对黑白棋有了一定的认识,下面我们来编写稍微复杂一点的模块。黑白棋并不像5子棋或者围棋一样可以在任意空白处下子,那么检测某个位置是否可以下子(如对规则还不是很了解,请参照前3题的规则介绍),也是我们黑白棋AI算法会经常调用的模块。下面需要同学们编写这一检测模块。
输入:
首先读入的是当前棋盘的状态,共8行,每行8个数字,1代表白棋,2代表黑棋,0代表为空格(未下子)。第9行有3个数字R C N,分别代表给定点的行、列还有所要下子的颜色。
输出:
输出对于这个位置是否可以落子,可以输出Yes,不可以则输出No.
输入样例:
0 0 0 0 0 0 0 00 0 0 0 0 0 1 00 0 0 2 0 2 0 00 0 1 2 2 2 0 00 0 0 2 1 0 0 00 0 0 2 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 02 4 1
输出样例:
Yes
#include<stdio.h>
int map[8][8];int r,c,n;int row[8]={0,-1,-1,-1,0,1,1,1};int cal[8]={-1,-1,0,1,1,1,0,-1};
void readdate();int down();
int main(){ readdate(); int abs=down(); if(abs==1) printf("Yes\n"); else printf("No\n");}
void readdate(){ int i,j; for(i=0;i<8;i++) { for(j=0;j<8;j++) { scanf("%d",&map[i][j]); } } scanf("%d %d %d",&r,&c,&n);}
int down(){ int i,j,flag,x,y; flag=0; if(map[r][c]!=0) flag=1; for(i=0;i<8;i++) { x=r+row[i]; y=c+cal[i]; if(x>=8||y>=8||x<0||y<0||map[x][y]==0||map[x][y]==n)continue; else { for(j=0;j<8;j++) { x=x+row[i]; y=y+cal[i]; if(x>=8||y>=8||x<0||y<0||map[x][y]==0) continue; if(map[x][y]==n) { flag=1; break; } } } } return flag;}
- 黑白棋(落子)
- C++——黑白棋(落子)
- 黑白棋的落子
- 黑白棋(落子)绞尽脑汁 与老师模式强烈不兼容的思路(不推荐)
- java-----五子棋小游戏(二)-----黑白棋落子制作
- 黑白棋求使新状态己方子最多的落子位置
- 黑白棋(game)
- 枚举(黑白棋)
- 黑白棋(博弈论)
- 黑白棋
- 黑白棋
- 黑白棋
- 黑白棋
- 黑白棋
- 黑白棋
- 黑白棋
- 黑白棋
- 黑白棋
- MySQL 5.7绿色版安装教程
- Windows命令行学习笔记
- 算法训练 s01串
- 栈操作
- pat乙级 1067. 试密码(20)
- 黑白棋(落子)
- 从零基础认识Controller控制页面跳转
- C和指针之动态内存分配之输入很多整数进行排序
- Android微信支付宝的底部导航栏是怎么做的?简单的导航栏蕴藏着大智慧!
- Redis-数据结构(字符串String)
- Redis-数据结构(哈希hash)
- 安装 MongoDB PHP 驱动 在CentOS 6.x和遇到的问题
- Daocloud Services(DCS)
- Design Pattern 5: Chain of Responsibility