P10386 [蓝桥杯 2024 省 A] 五子棋对弈题解复盘 五子棋平局蓝桥杯填空题题解复盘基本信息项目内容题目编号、来源蓝桥杯 五子棋平局结果填空题训练层级B DFS 回溯知识版块DFS、回溯、棋盘枚举、状态压缩解题前・关键信号识别维度分析目标、约束、底层结构目标5×5 棋盘白棋先手共 13 个黑棋 12 个终局无人五子连珠求平局终局数量约束棋盘 25 格每格三种状态空/白/黑但终局无空格底层结构DFS 枚举 25 个格子的黑白状态回溯恢复棋盘剪枝限制棋子数量。数据规模25 个格子每个格子 2 种状态白/黑总终局数 C(25,13) 5,200,300DFS 枚举所有方案完全可行。候选算法和依据DFS 回溯依据每个格子只有白/黑两种终局状态按顺序逐格枚举用剪枝减少搜索量。复杂度预判时间复杂度 O(2^25)但剪枝后大幅减少空间复杂度 O(25)。解题后・外化复盘维度内容实现结构 / 核心思路第一步从 (0,0) 开始 DFS逐格处理每个格子放白棋或黑棋第二步每步检查白棋是否超过 13 个、黑棋是否超过 12 个超过则剪枝返回第三步当 25 个格子全部处理完x5检查白棋是否恰好 13 个、黑棋恰好 12 个且无人五子连珠满足则 ans第四步定义 check() 函数检查 5 行、5 列、2 条对角线是否有五个相同棋子第五步输出 ans。核心思想枚举所有终局状态筛选满足棋子数量且无人获胜的平局局面。错因回溯1. 剪枝条件放在出口后面导致白棋超过 13 个的非法状态也被计入 ans2. 出口处没有检查white 13 black 12导致棋子数量不对的终局也被计入3. check() 函数用return true表示有人赢调用时用!check()表示平局逻辑正确但容易混淆4. 忘记回溯恢复board[x][y] 0导致棋盘状态被污染。边界和易错点1. 剪枝条件 if (white 13下次看到什么信号我应该想到这个方法看到「棋盘 黑白棋子 平局 结果填空」用 DFS 枚举所有终局状态 回溯。AC 完整代码#includeiostreamusingnamespacestd;intboard[5][5];intans0;boolcheck(){for(inti0;i5;i){if(board[i][0]!0board[i][0]board[i][1]board[i][1]board[i][2]board[i][2]board[i][3]board[i][3]board[i][4]){returntrue;}if(board[0][i]!0board[0][i]board[1][i]board[1][i]board[2][i]board[2][i]board[3][i]board[3][i]board[4][i]){returntrue;}}if(board[0][0]!0board[0][0]board[1][1]board[1][1]board[2][2]board[2][2]board[3][3]board[3][3]board[4][4]){returntrue;}if(board[0][4]!0board[0][4]board[1][3]board[1][3]board[2][2]board[2][2]board[3][1]board[3][1]board[4][0]){returntrue;}returnfalse;}voiddfs(intx,inty,intwhite,intblack){if(white13||black12)return;if(x5){if(white13black12!check())ans;return;}intnxx,nyy1;if(ny5){nxx1;ny0;}board[x][y]1;dfs(nx,ny,white1,black);board[x][y]2;dfs(nx,ny,white,black1);board[x][y]0;}intmain(){dfs(0,0,0,0);coutansendl;return0;}

相关新闻

最新新闻

SerenityOS 命令行选项解析指南:getopt 与 getopt_long 用法、返回值与底层实现

SerenityOS 命令行选项解析指南:getopt 与 getopt_long 用法、返回值与底层实现

SerenityOS 命令行选项解析指南:getopt 与 getopt_long 用法、返回值与底层实现 【免费下载链接】serenity The Serenity Operating System 🐞 项目地址: https://gitcode.com/GitHub_Trending/se/serenity 导读 本文以 getopt(3) 手册 为核心&a…

2026/9/29 2:52:50
轻量服务器还是ECS?大促云服务器选购与避坑实战指南

轻量服务器还是ECS?大促云服务器选购与避坑实战指南

每年大促节点,群里永远有人在问同一个问题:“38元的轻量服务器到底怎么抢?为什么我每次点进去都是已售罄?68元直购和99元的ECS我到底选哪个?”作为一个常年帮团队和自己采购云服务器的老用户,我太清楚这种纠…

2026/9/29 2:52:51
为 AI 代理的 Review 动作编写 Cedar 审批门控策略:review-agent-governance 策略编写实战指南

为 AI 代理的 Review 动作编写 Cedar 审批门控策略:review-agent-governance 策略编写实战指南

为 AI 代理的 Review 动作编写 Cedar 审批门控策略:review-agent-governance 策略编写实战指南 【免费下载链接】agents Multi-harness agentic plugin marketplace for Claude Code, Codex, Cursor, OpenCode, GitHub Copilot, and Google Antigravity 项目地址:…

2026/9/29 1:29:30
PaddleOCR 手写数学公式识别算法 CAN 实战指南:Counting-Aware Network 训练、评估与推理部署

PaddleOCR 手写数学公式识别算法 CAN 实战指南:Counting-Aware Network 训练、评估与推理部署

PaddleOCR 手写数学公式识别算法 CAN 实战指南:Counting-Aware Network 训练、评估与推理部署 【免费下载链接】PaddleOCR Turn any PDF or image document into structured data for your AI. A powerful, lightweight OCR toolkit that bridges the gap between i…

2026/9/29 1:39:24
Spring源码解析:构造器注入的类型转换与候选匹配机制

Spring源码解析:构造器注入的类型转换与候选匹配机制

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/28 17:20:49
openai-agents-python 多模型接入指南:深入解析 AnyLLMModel 适配层与 any-llm 路由

openai-agents-python 多模型接入指南:深入解析 AnyLLMModel 适配层与 any-llm 路由

openai-agents-python 多模型接入指南:深入解析 AnyLLMModel 适配层与 any-llm 路由 【免费下载链接】openai-agents-python A lightweight, powerful framework for multi-agent workflows 项目地址: https://gitcode.com/GitHub_Trending/op/openai-agents-pyth…

2026/9/29 2:52:53

日新闻

周新闻