ccf 201803-4 棋局评估(Python实现)
一、原题
问题描述
试题编号: |
201803-4 |
试题名称: |
棋局评估 |
时间限制: |
1.0s |
内存限制: |
256.0MB |
问题描述: |
问题描述 Alice和Bob正在玩井字棋游戏。
输入格式 输入的第一行包含一个正整数T,表示数据的组数。 输出格式 对于每组数据,输出一行一个整数,表示当前局面的得分。 样例输入 3 样例输出 3 样例说明 第一组数据: Bob已经获胜(如图),此局面得分为-(3+1)=-4。 数据规模和约定 对于所有评测用例,1 ≤ T ≤ 5。 |
二、题解
三、代码
- 以下提交15分:
num = int(input())
content = []
for i in range(num * 3):
content.append(list(map(int, input().split()))) def get_li(li):
i = 0
narray = []
for i in range(num):
narray.append([])
j = i * 3
for j in range(j, j + 3):
narray[i].append(li[j])
return narray def judge(li, u=1):
for i in range(3):
if li[i][0] == li[i][1] == li[i][2] == u:
return True
for i in range(3):
if li[0][i] == li[1][i] == li[2][i] == u:
return True
if li[0][0] == li[1][1] == li[2][2] == u:
return True
if li[2][0] == li[1][1] == li[0][1] == u:
return True
return False def space(li, u=0):
count = 0
for i in range(3):
for j in range(3):
if li[i][j] == u:
count += 1
return count def dfs(li, u):
max1, min1 = -10, 10
if (space(li)) >= 7: return 0
if u == 1 and judge(li, 2):
return -space(li) - 1
if u == 2 and judge(li, 1):
return space(li) + 1
if (space(li) == 0): return 0 for i in range(3):
for j in range(3):
if li[i][j] == 0:
li[i][j] = u
if u == 1:
max1 = max(max1, dfs(li, 2))
else:
min1 = min(min1, dfs(li, 1))
li[i][j] = 0
if u == 1:
return max1
else:
return min1 for i in get_li(content):
print(dfs(i, 1))
以下提交:
ccf 201803-4 棋局评估(Python实现)的更多相关文章
- ccf 201803-4 棋局评估 (对抗搜索)
棋局评估 问题描述 Alice和Bob正在玩井字棋游戏. 井字棋游戏的规则很简单:两人轮流往3*3的棋盘中放棋子,Alice放的是“X”,Bob放的是“O”,Alice执先.当同一种棋子占据一行.一列 ...
- CCF(棋局评估)博弈论+对抗搜索+DFS
201803-4 棋局评估 这题主要使用对抗搜索,也就是每一步寻找可以下棋的位置,通过在这一步下棋看最后会取的什么样的分数. #include<iostream> #include< ...
- 【CCF】棋局评估
博弈论极小极大搜索,记忆化+状压 #include<iostream> #include<cstdio> #include<string> #include< ...
- CCF-CSP题解 201803-4 棋局评估
求当前井字棋局的得分. 用dfs虚构一下搜索树,每个节点对应一个不同的棋局. 每个节点有一个situation()情况评估,若胜负已定,则对应该棋局的评分:否则为0,表示胜负未定或平局. 每个节点还有 ...
- CSP201803-4棋局评估
问题描述 Alice和Bob正在玩井字棋游戏. 井字棋游戏的规则很简单:两人轮流往3*3的棋盘中放棋子,Alice放的是“X”,Bob放的是“O”,Alice执先.当同一种棋子占据一行.一列或一条对角 ...
- ccf 201803-2 碰撞的小球(Python)
问题描述 数轴上有一条长度为L(L为偶数)的线段,左端点在原点,右端点在坐标L处.有n个不计体积的小球在线段上,开始时所有的小球都处在偶数坐标上,速度方向向右,速度大小为1单位长度每秒. 当小球到达线 ...
- python 2048游戏控制器
2048游戏控制器 1 evaluate 要用程序来处理就得对现实的问题进行量化,用数字来表示.在2048游戏中,我们的输入是一个棋局,让我们输出一个移动方向,这样我们需要对棋局进行量化,即我们要评估 ...
- robot API笔记6
robot.libraries 计划举办机器人框架标准测试库. 图书馆是主要用于外部的测试数据,但是他们可以 也使用自定义测试库是否有必要. 特别是 的内装式 图书馆通常是有用的 当需要与框架. 因为 ...
- tensorflow tfdbg 调试手段
https://blog.csdn.net/gubenpeiyuan/article/details/82710163 TensorFlow 调试程序 tfdbg 是 TensorFlow 的专用调试 ...
随机推荐
- javascript中的style只能取到在HTML中定义的css属性
如果在css中定义的 li{ width:100px; left:100px; top:; position:absolute; font-style:normal; } 这样执行: oli[0].s ...
- linux 02 基础命令
linux 02 基础命令 1.alias 别名 pyvip@Vip:~/demo$ alias lh="ls -lh" #将ls -lh的功能赋给lh(lh原来并没有意义)这个赋 ...
- atom通过remote ftp同步本地文件到远程主机的方法
视频教程:https://ninghao.net/video/3991 搜索 “remote ftp”, 点击 “Package”搜索包,Install”安装 本地打开需要同步的项目目录 创建 rem ...
- 爬虫(ProxyHandler)——代理
工具:python3 步骤: 1)使用ProxyHandler()构建httpproxy_handler对象 2)使用build_opener(httpproxy_handler)构建opener 3 ...
- AXURE-手把手教你做汉化
我们默认下载的AXURE是英文版的,对于英文能力不足或者不习惯英文界面的,那必须使用汉化手段,网上也有很多朋友已经为大家做好了汉化文件,这里介绍一下如何自己做AXURE的汉化. 如何开始汉化 如何 ...
- mysql in和exists性能比较和使用
in 是把外表和内表作hash 连接,而exists是对外表作loop循环,每次loop循环再对内表进行查询.一直以来认为exists比in效率高的说法是不准确的. 如果查询的两个表大小相当,那么用i ...
- Memcached分布式原理
http://younglibin.iteye.com/blog/2043761 浅显易懂,值得一读
- Redis string(字符串)
1.getset key newValue //给key设置value,并返回旧的value,如果没有旧的value,返回nil. 示例: getset age //age 的值被设置为 ...
- 外观模式及php实现
外观模式: 外观模式(Facade Pattern):外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更 ...
- vue使用uglifyjs-webpack-plugin后打包报错
楼主最新对已做项目进行打包优化,配置了打包环境下去除console.log语句插件---使用uglifyjs-webpack-plugin具体代码如下 npm install uglifyjs-web ...