puzzle(1123)星系探秘
目录一规则二策略三实战1简单2中等3困难4专家四计算机求解1暴力求解2DFS剪枝1求出所有可选的目标位置2求出绿色球每列刚好一个的所有情况3依次检查所有情况最强大脑《Q星探秘》同款puzzle一规则参考Q星探秘二策略策略一寻找突破口。根据最终状态每一个扇区都得是一个三角形。而每一个绿色和蓝色的点只能待在本扇区或移动到相邻扇区。所以一开始的突破口就是寻找一整个扇区都没有绿色和蓝色点的扇区。策略二只操作确定的点。尽量全程只操作确定的点对于有两种情况需要选择的尽量留到后半程去选择。策略三优先合成能合成三角形的优先合成三角形。从第1个三角形开始连续往外扩张。三实战1简单2中等3困难4专家四计算机求解以专家级为例这是上面的实战示例。1暴力求解时间复杂度4^722DFS剪枝1求出所有可选的目标位置int row 8; int col 24; struct Points { int r; int c; bool operator(const Points p) const { if (c p.c)return r p.r; return c p.c; } }; enum COLOR { GREEN, BLUE, RED }; vectorPoints getNext(Points p, COLOR c) { vectorPointsans; ans.push_back(p); if (c GREEN) { ans.push_back({ p.r,(p.c 1) % col }); ans.push_back({ p.r,(p.c col - 1) % col }); if (p.r)ans.push_back({ p.r - 1,p.c }); if (p.r row - 1)ans.push_back({ p.r 1,p.c }); } if (c BLUE) { if (p.r) { ans.push_back({ p.r - 1,(p.c col - 1) % col }); ans.push_back({ p.r - 1,(p.c 1) % col }); } if (p.r row - 1) { ans.push_back({ p.r 1,(p.c col - 1) % col }); ans.push_back({ p.r 1,(p.c 1) % col }); } } if (c RED) { ans.push_back({ p.r,(p.c 2) % col }); ans.push_back({ p.r,(p.c col - 2) % col }); if (p.r 2)ans.push_back({ p.r - 2,p.c }); if (p.r row - 2)ans.push_back({ p.r 2,p.c }); } return ans; } setPoints getTarget(vectorPointsgreen, vectorPointsblue, vectorPointsred) { mapPoints, intm1, m2, m3; for (auto p : green) { for (auto pi : getNext(p, GREEN))m1[pi]; } for (auto p : blue) { for (auto pi : getNext(p, BLUE))m2[pi]; } for (auto p : red) { for (auto pi : getNext(p, RED))m3[pi]; } setPointsans; for (auto pair : m1) { if (m2[pair.first] m3[pair.first])ans.insert(pair.first); } return ans; } int main() { vectorPointsgreen{ {1,0},{3,1},{3,2},{4,2},{0,4},{3,5},{3,6},{3,7},{7,8},{6,9},{3,11},{4,11}, {0,12},{7,12},{0,13},{1,15},{3,16},{5,17},{5,18},{6,18},{6,19},{0,20},{6,21},{4,23} }; vectorPointsblue{ {2,2},{4,3},{5,4},{0,5},{2,5},{4,5},{2,6},{7,7},{6,8},{3,10},{6,10},{1,12},{4,12}, {1,13},{1,14},{5,16},{3,17},{6,17},{7,19},{1,20},{4,20},{5,21},{0,22},{3,23} }; vectorPointsred{ {2,0},{3,0},{4,1},{5,1},{3,4},{1,6},{6,6},{1,7},{2,7},{7,9},{4,10},{5,10}, {7,11},{2,14},{4,14},{0,15},{6,15},{2,17},{7,18},{3,19},{6,20},{1,21},{2,21},{6,22} }; cout green.size() blue.size() red.size() endl; setPoints target getTarget(green, blue, red); cout target.size(); return 0; }输出24 24 2438因为24*8个格子里面只有38个格子是可选的目标位置所以以这个作为剪枝的基础能极大提高效率。2求出绿色球每列刚好一个的所有情况void dfs(vectorPointsv, COLOR c, setPoints target, vectorboolused, int id, vectorPointsans, setsetPoints allAns) { if (id col) { setPoints target; for (auto p : ans)target.insert(p); allAns.insert(target); return; } Points p v[id]; for (auto pi : getNext(p, c)) { if (used[pi.c])continue; if (target.find(pi) target.end())continue; ans.push_back(pi); used[pi.c] true; dfs(v, c, target, used, id 1, ans, allAns); used[pi.c] false; ans.erase(ans.begin() (ans.size() - 1)); } } //求出绿色球每列刚好一个的所有情况 setsetPoints solveGreen(vectorPointsgreen, setPoints target) { setsetPointsallAns; vectorboolused(col, false); vectorPointsans; dfs(green, GREEN, target, used, 0, ans, allAns); return allAns; } int main() { vectorPointsgreen{ {1,0},{3,1},{3,2},{4,2},{0,4},{3,5},{3,6},{3,7},{7,8},{6,9},{3,11},{4,11}, {0,12},{7,12},{0,13},{1,15},{3,16},{5,17},{5,18},{6,18},{6,19},{0,20},{6,21},{4,23} }; vectorPointsblue{ {2,2},{4,3},{5,4},{0,5},{2,5},{4,5},{2,6},{7,7},{6,8},{3,10},{6,10},{1,12},{4,12}, {1,13},{1,14},{5,16},{3,17},{6,17},{7,19},{1,20},{4,20},{5,21},{0,22},{3,23} }; vectorPointsred{ {2,0},{3,0},{4,1},{5,1},{3,4},{1,6},{6,6},{1,7},{2,7},{7,9},{4,10},{5,10}, {7,11},{2,14},{4,14},{0,15},{6,15},{2,17},{7,18},{3,19},{6,20},{1,21},{2,21},{6,22} }; setPoints target getTarget(green, blue, red); setsetPoints v solveGreen(green, target); cout v.size() endl; return 0; }输出963依次检查所有情况bool check(setPointstargetAns, vectorPointsv, COLOR c) { setsetPointsallAns; vectorboolused(col, false); vectorPointsans; dfs(v, c, targetAns, used, 0, ans, allAns); return allAns.find(targetAns)! allAns.end(); } int main() { vectorPointsgreen{ {1,0},{3,1},{3,2},{4,2},{0,4},{3,5},{3,6},{3,7},{7,8},{6,9},{3,11},{4,11}, {0,12},{7,12},{0,13},{1,15},{3,16},{5,17},{5,18},{6,18},{6,19},{0,20},{6,21},{4,23} }; vectorPointsblue{ {2,2},{4,3},{5,4},{0,5},{2,5},{4,5},{2,6},{7,7},{6,8},{3,10},{6,10},{1,12},{4,12}, {1,13},{1,14},{5,16},{3,17},{6,17},{7,19},{1,20},{4,20},{5,21},{0,22},{3,23} }; vectorPointsred{ {2,0},{3,0},{4,1},{5,1},{3,4},{1,6},{6,6},{1,7},{2,7},{7,9},{4,10},{5,10}, {7,11},{2,14},{4,14},{0,15},{6,15},{2,17},{7,18},{3,19},{6,20},{1,21},{2,21},{6,22} }; setPoints target getTarget(green, blue, red); setsetPoints v solveGreen(green, target); for (auto vi : v) { if (check(vi, blue, BLUE) check(vi, red, RED)) { for (auto p : vi)cout p.r p.c ; cout endl endl; } } return 0; }输出4 0 3 1 3 2 4 3 1 4 2 5 3 6 3 7 6 8 5 9 3 10 7 11 4 12 0 13 0 14 2 15 4 16 6 17 5 18 5 19 6 20 0 21 6 22 1 234 0 3 1 3 2 4 3 1 4 2 5 3 6 3 7 6 8 5 9 3 10 7 11 4 12 0 13 0 14 2 15 4 16 6 17 7 18 5 19 6 20 0 21 6 22 1 234 0 3 1 3 2 4 3 1 4 2 5 3 6 3 7 6 8 7 9 3 10 7 11 4 12 0 13 0 14 2 15 4 16 6 17 5 18 5 19 6 20 0 21 6 22 1 234 0 3 1 3 2 4 3 1 4 2 5 3 6 3 7 6 8 7 9 3 10 7 11 4 12 0 13 0 14 2 15 4 16 6 17 7 18 5 19 6 20 0 21 6 22 1 23也就是说一共有4种答案其实也就是第9列有2种情况第18列也有2种情况。实战中我自己推理出的答案对应的就是4 0 3 1 3 2 4 3 1 4 2 5 3 6 3 7 6 8 7 9 3 10 7 11 4 12 0 13 0 14 2 15 4 16 6 17 5 18 5 19 6 20 0 21 6 22 1 23这一组

相关新闻

AI万能分类器性能实测:在真实数据集上的表现对比与效果展示

AI万能分类器性能实测:在真实数据集上的表现对比与效果展示

AI万能分类器性能实测:在真实数据集上的表现对比与效果展示 “无需训练,即输即分”——这句口号听起来很美好,但实际效果究竟如何?当我们将AI万能分类器放到真实、复杂、充满噪音的业务数据面前,它还能保持那份从容与…

2026/7/5 23:01:22 阅读更多 →
CasRel模型效果展示:高准确率抽取体育新闻中运动员-赛事-成绩

CasRel模型效果展示:高准确率抽取体育新闻中运动员-赛事-成绩

CasRel模型效果展示:高准确率抽取体育新闻中运动员-赛事-成绩 1. 引言:从海量新闻中快速“读”出关键信息 想象一下,你是一名体育数据分析师,每天需要从成千上万条体育新闻中,手动整理出“哪位运动员”、“参加了什么…

2026/7/3 19:30:40 阅读更多 →
项目实战——企业级WGCLOUD监控实战

项目实战——企业级WGCLOUD监控实战

WGCLOUD是一款实用优秀免费的运维管理工具,可以用于监控管理各种服务器和主机,采集监控主机的各种指标状态数据,比如cpu,内存,磁盘,网络,进程,端口,防火墙,GP…

2026/7/4 1:53:27 阅读更多 →

最新新闻

番茄小说下载器终极指南:从零开始打造个人数字图书馆的完整解决方案

番茄小说下载器终极指南:从零开始打造个人数字图书馆的完整解决方案

番茄小说下载器终极指南:从零开始打造个人数字图书馆的完整解决方案 【免费下载链接】Tomato-Novel-Downloader 番茄小说下载器不精简版 项目地址: https://gitcode.com/gh_mirrors/to/Tomato-Novel-Downloader 还在为无法离线阅读番茄小说而烦恼吗&#xff…

2026/7/6 6:57:03 阅读更多 →
PCF8591与PIC18F46K80的信号转换系统设计与优化

PCF8591与PIC18F46K80的信号转换系统设计与优化

1. PCF8591与PIC18F46K80的信号转换系统概述在嵌入式系统开发中,模拟信号与数字信号的相互转换是常见需求。PCF8591作为一款集成了ADC和DAC功能的芯片,配合PIC18F46K80这款高性能8位单片机,可以构建一个灵活的信号处理系统。这个组合特别适合…

2026/7/6 6:57:02 阅读更多 →
参数检验 vs 非参数检验:5种常见场景下的选择决策树与Python/SPSS实现

参数检验 vs 非参数检验:5种常见场景下的选择决策树与Python/SPSS实现

参数检验 vs 非参数检验:5种常见场景下的选择决策树与Python/SPSS实现 数据分析的核心任务之一是通过样本数据推断总体特征。在这个过程中,统计检验方法的选择直接影响结论的可靠性。参数检验和非参数检验作为两大主流方法,各自适用于不同的数…

2026/7/6 6:53:01 阅读更多 →
Python 3.12 文本情感分析实战:基于BERT模型解析《母亲》主题情感倾向

Python 3.12 文本情感分析实战:基于BERT模型解析《母亲》主题情感倾向

Python 3.12 文本情感分析实战:基于BERT模型解析《母亲》主题情感倾向在当代自然语言处理领域,情感分析技术已成为理解文本深层含义的重要工具。本文将带您用Python 3.12和BERT模型,对经典文本《母亲》进行专业级情感倾向解析。不同于传统的人…

2026/7/6 6:53:01 阅读更多 →
LCD 液晶屏驱动时序详解:以 800x480 分辨率为例,配置 VBP/VFP/HBP/HFP 4 个关键参数

LCD 液晶屏驱动时序详解:以 800x480 分辨率为例,配置 VBP/VFP/HBP/HFP 4 个关键参数

LCD 液晶屏驱动时序深度解析:800x480 分辨率实战配置指南1. 液晶显示技术基础与驱动原理液晶显示器(LCD)作为现代电子设备最常用的显示技术之一,其核心在于通过电场精确控制液晶分子的排列状态。当我们在嵌入式系统中使用LCD时&am…

2026/7/6 6:53:01 阅读更多 →
SLO2016与PIC18F87J50在工业自动化中的高效组合

SLO2016与PIC18F87J50在工业自动化中的高效组合

1. SLO2016与PIC18F87J50的黄金组合解析在工业自动化领域,信号传输的稳定性和可靠性直接决定了整个系统的运行质量。SLO2016光电耦合器与PIC18F87J50微控制器的组合,正是为解决这一核心问题而生的经典方案。这套组合拳的独特之处在于:SLO2016…

2026/7/6 6:51:01 阅读更多 →

日新闻

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2与MySQL单元测试兼容性:5个关键SQL语句差异与规避方案1. 单元测试中的数据库兼容性挑战在Java开发领域,单元测试是保证代码质量的重要环节。当应用涉及数据库操作时,测试环境的搭建往往成为开发者的痛点。H2数据库因其轻量级、内存模式和快…

2026/7/6 0:01:17 阅读更多 →
Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘 【免费下载链接】rbtray A fork of RBTray from http://sourceforge.net/p/rbtray/code/. 项目地址: https://gitcode.com/gh_mirrors/rb/rbtray 你是否厌倦了Windows任务栏上密密麻麻的图标&…

2026/7/6 0:01:17 阅读更多 →
Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C 运行时库一键安装终极指南:告别DLL缺失烦恼 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾经遇到过这样的情况:下载了…

2026/7/6 0:05:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/6 6:52:56 阅读更多 →

月新闻