ccf 201803-4 棋局评估(Python实现)
一、原题
问题描述
二、题解
三、代码
- 以下提交15分:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | 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 )) |
以下提交:
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律