状态压缩+博弈+搜索

我先把棋局按照3进制压缩为一个整数,用这个整数作为参数去搜索,比较简便

两个人都要按最优策略来,就是博弈,这道题就简单的标记下当前是哪个人走

是Alice就递归的选择接下来能得到的最大分数,Bob就是最小分数

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
typedef long long ll;
int p[12];
int judge(int d)
{int a[10],t=0;for(int i=8;i>=0;i--){a[i]=d%3;d/=3;if(a[i]==0) t++;}if(a[0]==a[1]&&a[1]==a[2]&&a[2]==1||a[3]==a[4]&&a[4]==a[5]&&a[5]==1||a[6]==a[7]&&a[7]==a[8]&&a[8]==1||a[0]==a[3]&&a[3]==a[6]&&a[6]==1||a[1]==a[4]&&a[4]==a[7]&&a[7]==1||a[2]==a[5]&&a[5]==a[8]&&a[8]==1||a[0]==a[4]&&a[4]==a[8]&&a[8]==1||a[2]==a[4]&&a[4]==a[6]&&a[6]==1)return t+1;if(a[0]==a[1]&&a[1]==a[2]&&a[2]==2||a[3]==a[4]&&a[4]==a[5]&&a[5]==2||a[6]==a[7]&&a[7]==a[8]&&a[8]==2||a[0]==a[3]&&a[3]==a[6]&&a[6]==2||a[1]==a[4]&&a[4]==a[7]&&a[7]==2||a[2]==a[5]&&a[5]==a[8]&&a[8]==2||a[0]==a[4]&&a[4]==a[8]&&a[8]==2||a[2]==a[4]&&a[4]==a[6]&&a[6]==2)return -t-1;return 0;
}
int dfs(int d,int f)
{int ret=judge(d);if(ret!=0) return ret;int t=d,num=0;for(int i=0;i<9;i++){if(t%3==0) num++;t/=3;}if(!num) return 0;if(f>0){int t=d;ret=-10;for(int i=0;i<9;i++){if(t%3==0) ret=max(ret,dfs(d+p[i],-f));t/=3;}}else{int t=d;ret=10;for(int i=0;i<9;i++){if(t%3==0) ret=min(ret,dfs(d+2*p[i],-f));t/=3;}}return ret;
}
int main()
{p[0]=1;for(int i=1;i<10;i++)p[i]=3*p[i-1];int T;scanf("%d",&T);while(T--){int a,d=0;for(int i=0;i<9;i++){scanf("%d",&a);d=d*3+a;}printf("%d\n",dfs(d,1));}return 0;
}

CCF认证 2018-03 棋局评估相关推荐

  1. CCF历年题目201803-4 棋局评估

    代码: #include <bits/stdc++.h> #define ll long long #define INF 0x3f3f3f3f using namespace std; ...

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

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

  3. CCF认证历年真题 满分代码(更新至2018年12月)

    目标是集齐所有CCF认证试题的满分代码! 每次考试出题一般规律: 第一题:水题(稍微有些编程经验就可以写) 第二题:小模拟(处理比较简单的问题,掌握C++STL很有帮助) 第三题:大模拟(处理复杂的问 ...

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

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

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

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

  6. CCF认证考试题解目录(持续更新)

    该认证考试代码均采用C++语言来进行编写!!! 2020 CCF认证-20200901-称检测点查询 CCF认证-20200902-风险人群筛查 CCF认证-20200903-点亮数字人生 CCF认证 ...

  7. CCF认证考试题解目录

    针对历年考题,编写自己的解题程序,在官方网站上提交,了解得分.这个做法可以了解自己的编程水平,找出自己的不足.这样便可以有针对性地改进自己的不足之处,提高考试成绩. 传送门:CCF模拟测试 登录后出现 ...

  8. CCF认证201909-4推荐系统

    CCF认证201909-4推荐系统 题目描述 算法设计+题目分析 注意点+记录点 代码(0分) 感谢链接 题目描述 201909-4推荐系统 算法设计+题目分析 写在前面的 首先,跟看这篇blog的同 ...

  9. CCF认证历年试题解【网上跟帖,请不要使用称呼】

    程序改变现实,软件统治世界. 程序员需要有精益求精的工匠精神,追求逻辑的极简.时间的最少和存储的最省,并且懂得其中的平衡. 数据表示需要优先考虑,对于许多问题,找到表示该问题的数据结构,问题自然就解决 ...

  10. ccf认证俄罗斯方块java_CCF认证历年试题 - osc_h3robkrt的个人空间 - OSCHINA - 中文开源技术交流社区...

    CCF认证历年试题 不加索引整理会死星人orz 第一题: CCF201712-1 最小差值(100分) CCF201703-1 分蛋糕(100分) CCF201612-1 中间数(100分) CCF2 ...

最新文章

  1. 【EF Code First】 一对一、一对多的多重关系配置
  2. 数组越界怎么判断_算法连载之求解两个有序数组的中位数
  3. ionic ui框架及creator使用帮助
  4. 去重复java_去重复数据(JAVA)
  5. 点云技术无中生有100篇(一)-无人机航测如何正确布设像控点
  6. Hive 外部表关联分区数据
  7. 日记 [2008年03月23日]不编译内核给iptables增加模块
  8. IDEA中提示JAVA字符串常量过长
  9. 难道这个会是我的广角选择?
  10. 从零开始学androidNotification通知.四十四.
  11. Windows更新错误
  12. 使用动态规划算法需要满足的必要条件:优化原则
  13. Vue - 每个页面单独设置 body 背景色(独立修改单个页面的背景色,不同页面设置不同的背景颜色)
  14. 求解VRP问题的节约里程法、sweep扫描算法和λ互换法
  15. perl语言的学习(一)
  16. JavaScript的map方法
  17. 用Matlab求二次多项式,matlab二次多项式拟合
  18. 你可能需要为你的APP适配iOS11
  19. 2021-03-23 - 高性能 Redis 实战
  20. Linux 中文乱码解决

热门文章

  1. ppt中的面积显示图表中有数据被盖住了显示不出来_关于PPT图表的用法,看这一篇就够了...
  2. 随机森林如何评估特征重要性
  3. 移动echarts地图省份名称的位置
  4. 面试时如何谈自己的兴趣爱好
  5. 2020-11-25博客营销及软文营销价值
  6. 起步HarmonyOS生态的入门学习路线及资源
  7. 为何用户体验无法被设计,如何为用户体验设计
  8. bzoj 3811: 玛里苟斯【线性基+期望dp】
  9. 零信任实践之单包认证(SPA)
  10. 38、EST序列拼接流程