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 的专用调试 ...
随机推荐
- curl_setopt 注意
最近碰到好多奇怪的BUG,今天就是一个例子. 我在用CURL调用麦考林的接口,在浏览器测试完全没问题,调用全都成功.但是用命令行执行PHP时,却一直不行,返回http code 302错误.百思不得其 ...
- javac 找不到文件 的可能原因
初学Java还不太明白,竟在些简单的事情上栽跟头,分享一下省的麻烦. 当我们配置好JDK和环境变量之后,在命令行下输入javac,说明我们的安装是正确的.
- MongoDB 最初级步骤
对库TEST下的LOG聚集集合中的inserttim字段加索引 步骤(注意:前四步步骤不能错,错了不行): 一,打开F:\mongodb\bin\mongo.exe,也可以用cmd命令指到这个exe执 ...
- java Integer判等的大坑
在-128 至 127 范围内的赋值,Integer 对象是在IntegerCache.cache 产生,会复用已有对象,这个区间内的 Integer 值可以直接使用==进行 判断,但是这个区间之外的 ...
- Myeclipse发布第一个jsp页面及web project部署到tomcat上的几种方法
菜鸟日记: 1:new web project: 2:fix the visiting path of the tomcat,打开在安装目录下conf目录中的server.xml,在</Hos ...
- http://www.ibm.com/developerworks/cn/web/wa-lo-firefox-ext/index.html
<html> <head> <style> textarea{ width:800p ...
- Nginx开启Gzip压缩提高页面加载速度
本文转自http://www.veryhuo.com/a/view/51706.html,如有侵权,请及时联系转载人删除! 在实际运维中,为了提高web页面的访问加载速度,一般会把静态资源(比如js. ...
- Java中protected方法访问权限的问题
先看Test.java 此时出现上文提到的错误:The method clone from the type Object is not visiuable. 我们已经清楚Object.clone() ...
- wall命令
wall——发送广播信息 write all /usr/bin/wall 示例1: # wall 输入命令之后回车便可以广播消息,如输入Hello everybody online后Ctrl+D结束并 ...
- 字符编码ANSI和ASCII区别、Unicode和UTF-8区别
ANSI码ANSI编码是一种对ASCII码的拓展:ANSI编码用0x00~0x7f (即十进制下的0到127)范围的1 个字节来表示 1 个英文字符,超出一个字节的 0x80~0xFFFF 范围来表示 ...

