思路:用极大极小搜索解决这样的问题很方便!!

代码如下:

 #include <cstdio>
#include <algorithm>
#define inf 100000000
using namespace std;
char str[][];
int x,y,num;
bool ok(int x,int y) //判断是否胜
{
int i;
for(i=;i<;i++) //(x,y)所在的行
if(str[x][i]!=str[x][y]) break;
if(i==) return ;
for(i=;i<;i++) //(x,y)所在的列
if(str[i][y]!=str[x][y]) break;
if(i==) return ;
if(x==y){ //主对角线
for(i=;i<;i++)
if(str[i][i]!=str[x][y]) break;
if(i==) return ;
return ;
}
if(x+y==){ //副对角线
for(i=;i<;i++)
if(str[i][-i]!=str[x][y]) break;
if(i==) return ;
return ;
}
return ;
}
int minimax(int x,int y,int ma);
int maxmini(int x,int y,int mi)
{
int ma=-inf;
if(ok(x,y)) return ma;
if(num==) return ;
for(int i=;i<;i++)
for(int j=;j<;j++)
if(str[i][j]=='.'){
str[i][j]='x';
num++;
int t=minimax(i,j,ma);
num--;
str[i][j]='.';
ma=max(ma,t);
if(ma>=mi) return ma;
}
return ma;
}
int minimax(int x,int y,int ma)
{
int mi=inf;
if(ok(x,y)) return mi;
if(num==) return ;
for(int i=;i<;i++)
for(int j=;j<;j++)
if(str[i][j]=='.'){
str[i][j]='o';
num++;
int t=maxmini(i,j,mi);
num--;
str[i][j]='.';
mi=min(mi,t);
if(mi<=ma) return mi;
}
return mi;
}
bool cal()
{
int ma=-inf;
for(int i = ;i<;i++)
for(int j = ;j<;j++)
if(str[i][j]=='.'){
str[i][j]='x';
num++;
int t = minimax(i,j,ma);
num--;
str[i][j]='.';
ma=max(t,ma);
if(ma==inf){
x=i;
y=j;
return ;
}
}
return ;
}
int main()
{
char ch[];
// freopen("1.txt","r",stdin);
while(scanf("%s",ch)&&ch[]!='$'){
num = ;
for(int i = ;i < ;i++){
scanf("%s",str[i]);
for(int j = ;j < ;j++)
num += (str[i][j]!='.');
}
if(num <= ){
printf("#####\n");
continue;
}
if(cal()) printf("(%d,%d)\n",x,y);
else printf("#####\n");
}
}

poj 1568 Find the Winning Move 极大极小搜索的更多相关文章

  1. POJ 1568 Find the Winning Move

    Find the Winning Move 链接 题意: 4*4的棋盘,给出一个初始局面,问先手有没有必胜策略? 有的话输出第一步下在哪里,如果有多个,按(0, 0), (0, 1), (0, 2), ...

  2. poj1568 Find the Winning Move[极大极小搜索+alpha-beta剪枝]

    Find the Winning Move Time Limit: 3000MS   Memory Limit: 32768K Total Submissions: 1286   Accepted:  ...

  3. POJ 1568 Find the Winning Move(极大极小搜索)

    题目链接:http://poj.org/problem?id=1568 题意:给出一个4*4的棋盘,x和o两人轮流放.先放够连续四个的赢.给定一个局面,下一个轮到x放.问x是否有必胜策略?若有,输出能 ...

  4. POJ 1568 极大极小搜索 + alpha-beta剪枝

    极小极大搜索 的个人理解(alpha-beta剪枝) 主要算法依据就是根据极大极小搜索实现的. 苦逼的是,查了两个晚上的错,原来最终是判断函数写错了..瞬间吐血! ps. 据说加一句 if sum & ...

  5. 【迭代博弈+搜索+剪枝】poj-1568--Find the Winning Move

    poj  1568:Find the Winning Move   [迭代博弈+搜索+剪枝] 题面省略... Input The input contains one or more test cas ...

  6. 算法笔记--极大极小搜索及alpha-beta剪枝

    参考1:https://www.zhihu.com/question/27221568 参考2:https://blog.csdn.net/hzk_cpp/article/details/792757 ...

  7. 【poj1568】 Find the Winning Move

    http://poj.org/problem?id=1568 (题目链接) 题意 两人下4*4的井字棋,给出一个残局,问是否有先手必胜策略. Solution 极大极小搜索.. 这里有个强力优化,若已 ...

  8. 极大极小搜索思想+(α/β)减枝 【转自-----https://blog.csdn.net/hzk_cpp/article/details/79275772】

    极大极小搜索,即minimax搜索算法,专门用来做博弈论的问题的暴力. 多被称为对抗搜索算法. 这个搜索算法的基本思想就是分两层,一层是先手,记为a,还有一层是后手,记为b. 这个搜索是认为这a与b的 ...

  9. [CodeVs3196]黄金宝藏(DP/极大极小搜索)

    题目大意:给出n(≤500)个数,两个人轮流取数,每次可以从数列左边或者右边取一个数,直到所有的数被取完,两个人都以最优策略取数,求最后两人所得分数. 显然这种类型的博弈题,第一眼就是极大极小搜索+记 ...

随机推荐

  1. Java之XStream之下划线问题

    XStream将Java对象序列为XML, 如果对象属性带有下划线,输出到XML时会转成"__"双下划. 网上很多资料说是Bug, XStream开发的大神没有哪么笨吧? 查了一下 ...

  2. MongoDB的交互(mongodb/node-mongodb-native)、MongoDB入门

    MongoDB 开源,高性能的NoSQL数据库:支持索引.集群.复制和故障转移.各种语言的驱动程序:高伸缩性: NoSQL毕竟还处于发展阶段,也有说它的各种问题的:http://coolshell.c ...

  3. [转]How do I use software from a PPA

    [转]How do I use software from a PPA? https://launchpad.net/~mc3man/+archive/ubuntu/trusty-media To s ...

  4. 安装MSITVPN连接的时候弹出:需要(未知)上的文件'MSITVPN.bmp。

    使用 msitvpn 连接microsoft 公司内网,在安装msitvpn的时候突然弹出一个对话框提示需要msitvpn.bmp 文件,找了很久都没找到解决问题方案. 最后只能猜测是不是和用户的权限 ...

  5. Java Day 13

    线程的状态 被创建 运行 冻结 消亡  被创建--start()--> 运行 运行----run()----> 消亡         stop() 运行---sleep(time)---& ...

  6. word2007中如何隐藏工具栏

    1.对于屏幕较小的用户来说,编辑时可能需要隐藏word上方的工具栏,具体操作如下:

  7. win8中如何禁用屏幕旋转的快捷键

    程序员通常会使用ctrl+alt+方向键 里编辑代码,特别对于使用eclipse的程序员,更是如此,但是win8却把这一快捷键给占用了,很不爽,如何办,很简单.直接上图: 2.但是发现禁用之后并没有解 ...

  8. C#制作高仿360安全卫士窗体(四)- 水晶按钮

    项目越来越紧,我也乐此不疲.自从上次C#制作高仿360安全卫士窗体(三)出来之后,就开始有一些人在说为什么还在坚持写这么落后的东西.我想说的是,我是从事企业信息化工作的,所有程序都只对内部使用.所以只 ...

  9. HDU 5638 拓扑排序+优先队列

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5638 题意: 给你一个DAG图,删除k条边,使得能个得到字典序尽可能小的拓扑排序 题解: 把拓扑排序 ...

  10. hdu 3157 Crazy Circuits 网络流

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3157 You’ve just built a circuit board for your new r ...