ZUFEOJ 2395 天棋哥哥大战AlphGo
Description
3月15日,人机围棋大战巅峰对决在韩国首尔落下帷幕。五番棋的最后一局中,韩国著名棋手李世乭尽管与人工智能“AlphaGo”缠斗至官子阶段,但在双双进入读秒后最终还是投子认输,以总比分1∶4结束了这场举世瞩目的人机大战。
100年后的某一天,天棋哥哥为了给李世乭报仇,挽回人类尊严,代表人类向AlphaGo发起了挑战。
100年后的AlphaGo比现在强了几百倍,谷歌公司允许天棋哥哥携带一个程序与AlphaGo对战。
为了能战胜AlphaGo,现在请你帮助天棋哥哥写一个程序来判断他这一步落子后,最多能提几子。
提子规则如下:
中国围棋棋盘可以看做一个19*19的网格,每一个网格都可以下棋子。
【棋子的气】
一个棋子在棋盘上,与它直线紧邻的空点是这个棋子的“气”。
直线紧邻的点上如果有同色棋子存在,这些棋子就相互连接成一个不可分割的整体。
直线紧邻的点上如果有异色棋子存在,此处的气便不存在。棋子如失去所有的气,就不能在棋盘上存在。
【提子】
把无气之子清理出棋盘的手段叫“提子”。提子有二种:
1、下子后,对方棋子无气,应立即提取对方无气之子。
2、下子后,双方棋子都呈无气状态,应立即提取对方无气之子。
现在,给出一个局面,轮到天棋哥哥下,请计算他落子后最多能提多少子。
Input
每组测试数据19行,每行为长度19的字符串
'.'代表空格,'X'代表天棋哥哥,'O’代表AlphaGo
Output
输出一个数字,代表最多能提几子。
Sample Input
...................
....XX.............
...XOOX............
.....X.............
....X..............
.....O.............
......O............
...................
...................
...................
...................
...................
...................
...................
...................
...................
...................
...................
...................
...................
....XX.............
...XO.X............
.....X.............
....X..............
.....O.............
......O............
...................
...................
...................
..................X
.................XO
..................O
..................X
...................
...................
...................
...................
...................
Sample Output
2
2
#include<iostream>
#include<stdio.h>
#include<cstring>
#include<queue>
#include<algorithm>
using namespace std;
char a[][];
int res,res1,sum;
int rx[]={,,,-};
int ry[]={,-,,};
bool vis[][];
bool flag1;
bool check(int x,int y)//检查.是不是在O旁边
{
int xx,yy;
bool flag=false;
for(int i=;i<;i++)
{
xx=x+rx[i];
yy=y+ry[i];
if(xx>=&&xx<&&yy>=&&yy<)
if(a[xx][yy]=='O')
{
flag=true;
break;
}
}
return flag;
}
void dfs(int x,int y)
{
int xx,yy;
for(int i=;i<;i++)
{
xx=x+rx[i];
yy=y+ry[i];
if(xx>=&&xx<&&yy>=&&yy<)
{
if(a[xx][yy]=='.')
{
flag1=false;
}
if(a[xx][yy]=='O'&&!vis[xx][yy])
{
vis[xx][yy]=true;
sum++;
dfs(xx,yy);
}
}
}
}
int check2()//判断能提几个子
{
int i,j;
res1=;//每次放子能提多少子
for(i=;i<;i++)
for(j=;j<;j++)
if(a[i][j]=='O'&&!vis[i][j])
{
vis[i][j]=true;
flag1=true;
sum=;//sum是每一块能提的子
dfs(i,j);
if(flag1)res1+=sum;
}
return res1;
}
int main()
{
int i,j;
while(scanf("%s",&a[])!=EOF)
{
res=;
int res1;
int n,m;
for(i=;i<;i++)
for(j=;j<;j++)
cin>>a[i][j]; for(i=;i<;i++)
for(j=;j<;j++)
if(a[i][j]=='.'&&check(i,j))
{
a[i][j]='X';
memset(vis,false,sizeof(vis));
res1=check2();
if(res1>res) res=res1; a[i][j]='.';
}
cout<<res<<endl;
}
return ;
}
ZUFEOJ 2395 天棋哥哥大战AlphGo的更多相关文章
- 天棋哥哥大战AlphaGo
天棋哥哥大战AlphaGo Time Limit: 1 Sec Memory Limit: 128 MB Submit: 20 Solved: 9 [Submit][Status][Web Boa ...
- 随便谈谈alphago与人机大战
3月16日历时8天的人机大战终于落下帷幕,alphago以4:1的比分击败了当年如日中天的李世石.这个结果让我这个围棋爱好者+计算机爱好者百感交集…… ——一个时代落幕了,一个新的时代开启了. 这次人 ...
- 圣魔大战3(Castle Fantisia)艾伦希亚战记完美攻略
作为城堡幻想曲系列续作,艾伦希亚战记继承了前作的战棋+养成模式进行游戏. (城堡幻想曲3,纠正大家个错误哦,不是圣魔大战3,圣魔大战是城堡幻想曲2,圣魔大战不是个系列,艾伦西亚战记==艾伦希亚战记,一 ...
- 攻略三战的完美体验3Castle Fantisia阿兰·梅希亚战争艾伦西战记它包含重做版本(这是新的艾伦·梅希亚大战)
(城堡幻想曲3,纠正大家个错误哦,不是圣魔大战3,圣魔大战是城堡幻想曲2,圣魔大战不是个系列,艾伦西亚战记==艾伦希亚战记,一个游戏日文名:タイトル キャッスルファンタジア -エレンシア戦記-リニュー ...
- 完美攻略心得之圣魔大战3(Castle Fantisia)艾伦希亚战记(艾伦西亚战记)包含重做版(即新艾伦希亚战记)
(城堡幻想曲3,纠正大家个错误哦,不是圣魔大战3,圣魔大战是城堡幻想曲2,圣魔大战不是个系列,艾伦西亚战记==艾伦希亚战记,一个游戏日文名:タイトル キャッスルファンタジア -エレンシア戦記-リニュー ...
- Unity2017五子棋大战_人机_双人_UNET联网
五子棋大战源码工程基于Unity2017.2进行开发,分为人机.双人.UNET网络三种对战方式,配有案例讲解视频, 其中人机五子棋AI有三种开发难度,欢迎有兴趣的同学加入学习! . 目录 000-展示 ...
- 人机大战中AlphaGo及其执子人黄士杰
2016年3月9日注定要写入围棋界的历史.IT界的历史以及科学界的历史.当天,韩国著名围棋棋手李世石VS谷歌AlphaGo的人机大战赛在韩国首尔举行.对弈的一方为拥有1200多个处理器的谷歌人工智能系 ...
- 【Web前端Talk】无聊吗?写个【飞机大战】来玩吧(上篇)
01前言介绍 微信小游戏是基于微信客户端的游戏,它即点即玩,无需下载安装,体验轻便,可以和微信内的好友一起玩,比如PK.围观等,享受小游戏带来的乐趣.那如何开发一款属于自己的小游戏呢? 源码地址: h ...
- 3D坦克大战游戏源码
3D坦克大战游戏源码,该游戏是基于xcode 4.3,ios sdk 5.1开发.在xcode4.3.3上完美无报错.兼容ios4.3-ios6.0 ,一款ios平台上难得的3D坦克大战游戏源码,有2 ...
随机推荐
- 间隔Ns请求某函数并且有timeout
实现方案: 1. 递归调用 2.timer:apply_interval() 3.gen_server来写 时间timeout怎么实现: 1.开始时间存入ets表中 2.put,get方法放入进程字典 ...
- 360回归A股,周鸿祎来给BAT和小米添堵了
排着队回国内上市的公司名单里,终于多了奇虎360的名字. 奇虎360今天宣布,公司董事会收到了来自董事长周鸿祎.中信证券及其附属公司.Golden Brick Capital Private Equi ...
- springmvc-interceptor(拦截器)
在大配置中配置拦截器代码如下: <mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/**" ...
- less学习:基础语法总结
一. less是什么 Less 是一门 CSS 预处理语言,它扩充了 CSS 语言,增加了诸如变量.混合(mixin).函数等功能,让 CSS 更易维护.方便制作主题.扩充. 注意1):less使用. ...
- 移动APP脚本录制
1.安装补丁--LR_03105_patch4----mobile app(http/html) 2.录制软件和移动设备同处同一环境(160wifi连接移动设备),创建wifi热点 3.创建脚本-协议 ...
- JVM性能调优监控工具jps、jstack、jmap、jhat、jstat使用详解
Jmap是一个可以输出所有内存中对象的工具,甚至可以将VM 中的heap,以二进制输出成文本.打印出某个java进程(使用pid)内存内的,所有'对象'的情况(如:产生那些对象,及其数量). 使用方法 ...
- Git提交到多个远程仓库
在已经习惯使用git同步写代码,github无疑是最的托管平台,但是国内由于"你懂的"原因,速度很慢,有时无法访问,于是想把自己的代码同步到多个不同的远程仓库备份. 我的主要仓库: ...
- laravel-1 安装.配置
听说laravel一直是一个很牛B的框架,之前接触过tp ci 也还只是一个小白,具体的核心没搞过,但对于我来说,框架都是拿来用的,会用即可. 以下内容为观看视频和自己查看资料后的整理,方便大家和自己 ...
- 【IE6的疯狂之十一】CSS的优先级及!important在IE6下的BUG
一 css的优先级 今天有人跟我说css hack中用!important来区分ie6,因为ie6不支持!important,是的在很早以前我也是用过这种方法写hack,但是后来就基本不用了.本来我对 ...
- 使用eclipse XML catalog绑定dtd文件
有时候我们想编辑struts或spring的xml配置文件的时候,输了“<”之后eclipse却没有提示关键字,这是因为eclipse需要到网络下载dtd文件而由于网络原因没下载下来所以无法提示 ...