题目链接http://118.190.20.162/submitlist.page?gpid=T70

井字棋,现在放了某些棋子。连成线的时候得分为(空格子数+1)(B赢*-1)问当前棋局中,如果Alice和Bob都按最优策略下棋,最终得分。

典型的min-max对抗搜索,A选取分数最高的一种走法,B选取分数最低的一种走法。

注意的是dfs返回值的初始化问题,min搜索初始值不一定小于0, max初始值不一定大于0(因为这个愚蠢的错了好几回)。

#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;
int graph[5][5];int judge()//是否结束,返回赢家
{for(int i = 0; i < 3; i++)if(graph[0][i] != 0 && graph[0][i] == graph[1][i] && graph[2][i] == graph[0][i])return graph[0][i];for(int i = 0; i < 3; i++)if(graph[i][0] != 0 && graph[i][0] == graph[i][1] && graph[i][2] == graph[i][0])return graph[i][0];if(graph[0][0] != 0 && graph[0][0] == graph[1][1] && graph[0][0] == graph[2][2])return graph[0][0];if(graph[2][0] != 0 && graph[2][0] == graph[1][1] && graph[2][0] == graph[0][2])return graph[2][0];return 0;
}int getdonow()//当前空格子数
{int cnt = 0;for(int i = 0; i < 3; i++){for(int j = 0; j < 3; j++){if(graph[i][j] == 0)cnt++;}}return cnt;
}int dfs(int donow)
{int person = donow % 2;//当前操作者if(person == 0)person = 2;if(judge() != 0)return person == 2? donow+1 : -donow-1;//此时已结束,有赢家if(donow == 0)return 0;//此时已结束,平局int retmax = -100, retmin = 100;//完全可以合成一个写for(int i = 0; i < 3; i++){for(int j = 0; j < 3; j++){if(graph[i][j] == 0){graph[i][j] = person;//准备下一步递归if(person == 1)retmax = max(retmax, dfs(donow-1));//maxelse retmin = min(retmin, dfs(donow-1));//mingraph[i][j] = 0;//回溯}}}if(person == 1)return retmax;else return retmin;
}int main()
{int T;int flag;int donow;scanf("%d", &T);while(T--){memset(graph, 0, sizeof(graph));for(int i = 0; i < 3; i++){scanf("%d%d%d", &graph[i][0], &graph[i][1], &graph[i][2]);}donow = getdonow();int ans = dfs(donow);if(ans > 0 && ans % 2 == 0)ans++;//如果题目严谨,没有什么用else if(ans < 0 && ans % 2 == 1)ans --;printf("%d\n", ans);}return 0;
}

[CSP]201803-4 棋局评估 min-max搜索相关推荐

  1. CSP认证 201803-4 棋局评估(极大极小值搜索)

    题目链接:http://118.190.20.162/view.page?gpid=T70 题目大意:给一个3*3棋盘,问按照最优策略下,如果1能赢输出赢后剩余未下的格子数+1,2能赢输出赢后负的剩下 ...

  2. CSP认证:棋局评估

    问题描述 大致思路:博弈论(最大最小搜索)+ DFS A与B都以最优策略行棋,即两方都走自己胜率尽可能大的方案.对于A来说,当A行棋时,选择所有可行方案中A最大得分的那一种方案:而当B行棋时,选择的是 ...

  3. CCF CSP 201803-4 棋局评估

    #问题描述 Alice和Bob正在玩井字棋游戏. 井字棋游戏的规则很简单:两人轮流往3*3的棋盘中放棋子,Alice放的是"X",Bob放的是"O",Alice ...

  4. CCF 201803 跳一跳 碰撞的小球 url映射 棋局评估

    试题编号: 201803-1 试题名称: 跳一跳 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 近来,跳一跳这款小游戏风靡全国,受到不少玩家的喜爱. 简化后的跳一跳规则如下: ...

  5. CCF 201803-4 棋局评估(博弈论)

    题目来源:http://118.190.20.162/view.page?gpid=T70 问题描述 试题编号: 201803-4 试题名称: 棋局评估 时间限制: 1.0s 内存限制: 256.0M ...

  6. CCF201803-4 棋局评估(100分)【博弈+DFS】

    试题编号: 201803-4 试题名称: 棋局评估 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 Alice和Bob正在玩井字棋游戏. 井字棋游戏的规则很简单:两人轮流往3* ...

  7. CCF计算机软件能力认证试题练习:201803-4 棋局评估

    棋局评估 来源:CCF 标签: 参考资料: 相似题目: 题目 Alice和Bob正在玩井字棋游戏. 井字棋游戏的规则很简单:两人轮流往3*3的棋盘中放棋子,Alice放的是"X", ...

  8. LINQ to SQL语句之 Count/Sum/Min/Max/Avg

    Count/Sum/Min/Max/Avg操作符 适用场景:统计数据吧,比如统计一些数据的个数,求和,最小值,最大值,平均数. Count 说明:返回集合中的元素个数,返回INT类型:不延迟.生成SQ ...

  9. 10.matlab中sort , min/max以及ceil 函数

    1.sort  排序 2.min/max 求最大最小值    3.ceil----向上取整(不进行四舍五入)

  10. P3175 [HAOI2015]按位或(Min - Max容斥,FMT,概率期望,全网最清晰的题解!)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Weblink https://www.luogu.com.cn/problem/P3175 Prob ...

最新文章

  1. 基于TI TMS320C6678 + Xilinx Kintex-7 的高性能信号处理方案
  2. 肠·道 | 邱琇:靓汤/烧香影响母婴健康?看巨大出生队列如何揭秘!
  3. 如何检测链表中的循环?
  4. 基于Java语言构建区块链(四)—— 交易(UTXO)
  5. react jquery_2019年React简介(面向仅了解jQuery的人们)
  6. 致敬各位10年阿里的前端开发
  7. html中继承加载不出css,javascript - 动态加载 html 中 td标签 的css样式 不起作用
  8. 智能网联汽车 自动驾驶功能场地试验方法及要求
  9. wpf DoEvents 用法原理存在的坑推荐方法
  10. 利用BeautifulSoup爬取豆瓣高分电影排行榜
  11. Linux日文教程,Ubuntu日语、法语输入法的设置
  12. label smooth方法论文调研
  13. @RunWith的使用
  14. 命令行的迅雷,这样用会更香
  15. cpu,寄存器,控制器,运算器
  16. Spring Cloud Gateway源码系列之路由配置加载过程
  17. 计算机制工艺品的意义,wh9程序化模型编写、计算机制说明
  18. 小型数控雕刻机制作Arduino_基于Arduino DIY的激光雕刻机
  19. 【微机原理与概述】微计算机概述
  20. Android 11 微信友盟分享报错 分享异常 Android 11及以上系统的手机需要使用FileProvider方式分享

热门文章

  1. 播放48KHZ有1S的停顿
  2. Windows2008无声音解决办法
  3. 《武林外传》中同福客栈的薪资保障是怎样的?
  4. 【程序人生】有没有可以快速阅读二进制文本的超人?
  5. 计算机及网络维护知识,计算机网络维护知识
  6. linux怎么用wifi笑话,笑话段子:这个WIFI信号不怎么好,你可以到我房间里来用...
  7. Bootstrap 折叠(collapse)插件面板
  8. 页面静态化优缺点_静态网站生成器的优缺点
  9. 会声会影2023旗舰版系统配置要求,会声会影序列号能用多少次
  10. php 开源 多人博客系统,PHP多用户博客系统WordPress MU