打豆豆最优解算法

jiashie 2016-11-08 09:44:37

规则:一个N*M的方阵,每个格子都可能有0到1个豆豆。豆豆有颜色的区别。
游戏者每次必须点击一个空格
此时在四条十字线的延伸方向上最先遇到的豆子中,如果有同色的,那么就可以把这些同色的打掉。

请教这里的大神,怎样找出最优解,使最后剩余豆豆最少,(且步数最少)。
已将上图转化为二维数组0表示空,其它颜色按赤橙黄绿青蓝紫灰的顺序分别用1-8表示。
8, 8, 3, 0, 0, 7, 0, 0, 8, 0, 8, 0, 6,
6, 7, 0, 6, 1, 0, 6, 0, 0, 0, 2, 0, 0,
0, 0, 2, 0, 6, 5, 1, 3, 0, 3, 0, 6, 0,
0, 2, 0, 6, 5, 7, 7, 0, 1, 6, 1, 1, 1,
3, 2, 0, 8, 0, 0, 0, 5, 7, 0, 7, 2, 0,
7, 8, 2, 3, 0, 0, 0, 8, 0, 0, 0, 5, 0,
0, 5, 8, 4, 5, 7, 0, 7, 4, 6, 2, 0, 3,
2, 1, 1, 1, 0, 0, 5, 2, 3, 2, 0, 0, 3,
5, 0, 4, 5, 0, 4, 0, 0, 6, 0, 4, 0, 3,
0, 0, 8, 0, 3, 8, 0, 0, 4, 1, 0, 7, 7,
0, 0, 8, 3, 6, 4, 4, 2, 0, 0, 5, 4, 0,
1, 0, 0, 0, 8, 1, 0, 5, 0, 0, 4, 4, 2,
0, 0, 5, 0, 0, 0, 7, 4, 0, 6, 3, 0, 0,

我用最笨的办法碰巧找到一个全消除的解法。但是该算法很不可靠,常常导致剩余很多豆豆相互阻隔无法全部消除。
Point(9, 5)
Point(9, 4)
Point(9, 4)
Point(6, 9)
Point(6, 11)
Point(6, 7)
Point(6, 7)
Point(9, 11)
Point(5, 12)
Point(6, 10)
Point(3, 9)
Point(3, 9)
Point(8, 1)
Point(8, 5)
Point(9, 5)
Point(9, 2)
Point(4, 10)
Point(5, 11)
Point(11, 7)
Point(12, 7)
Point(10, 7)
Point(12, 7)
Point(10, 6)
Point(8, 1)
Point(11, 8)
Point(2, 1)
Point(11, 7)
Point(7, 7)
Point(11, 1)
Point(11, 8)
Point(3, 1)
Point(4, 10)
Point(4, 4)
Point(10, 11)
Point(12, 3)
Point(12, 3)
Point(10, 2)
Point(6, 6)
Point(5, 12)
Point(11, 6)
Point(10, 6)
Point(1, 8)
Point(12, 2)
Point(2, 4)
Point(1, 3)
Point(5, 5)
Point(2, 4)
Point(3, 0)
算法处理结束,需要点击48次, 剩0个。

本来想着用暴力遍历的方法,但试了一下,数据量太大。
...全文
487 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
bree06 2016-11-11
  • 打赏
  • 举报
回复
bree06 2016-11-11
  • 打赏
  • 举报
回复
第一眼感觉使用广度优先. 不像迷宫这类题, 墙体是不能被拆除的, 所以节点拓展是固定的, 这里的消除会直接影响下一步拓展. 并且没有办法提前得知当前的消除是否会引起最终能否被完全消除...很麻烦的. 目前暂时只将UI画出来了, 用鼠标点击是可以消除的, 缺AI. 继续研究
bree06 2016-11-10
  • 打赏
  • 举报
回复
你这个是在直线上的颜色相同才消除还是十字线上只有碰到相同颜色就消除? 0 1 2 1 0 1 4 3 1 比如上面这样, 我点中间的0是消除第2行的两个1? 还是连第1行中间的1也消除?
jiashie 2016-11-10
  • 打赏
  • 举报
回复
引用 3 楼 bree06 的回复:
你这个是在直线上的颜色相同才消除还是十字线上只有碰到相同颜色就消除? 0 1 2 1 0 1 4 3 1 比如上面这样, 我点中间的0是消除第2行的两个1? 还是连第1行中间的1也消除?
十字线上只要有碰到相同颜色就消除。
nikyotensai 2016-11-09
  • 打赏
  • 举报
回复
  • 打赏
  • 举报
回复
我的天,看的头疼
内容概要:本文围绕“基于改进秃鹰算法的微电网群经济优化调度”展开研究,利用Matlab代码实现优化算法的仿真与复现。研究重点在于通过改进的秃鹰搜索算法(Bald Eagle Search Algorithm, BESA)解决微电网群在运行过程中的经济调度问题,提升算法的收敛速度与全局寻优能力,以实现对分布式能源、储能系统及负荷的高效协调管理。文中详细阐述了微电网群的系统架构、数学建模过程、目标函数设计(如运行成本最小化、碳排放降低等),并结合智能优化算法进行求解,验证了改进算法相较于传统方法在调度精度和效率方面的优越性。同时,研究还探讨了算法在多场景下的适应性,为微电网群的智能化、低碳化运行提供了技术支持与实践参考。; 适合人群:具备一定电力系统基础知识和Matlab编程能力的研究生、科研人员及从事微电网、智能优化算法相关工作的工程技术人员。; 使用场景及目标:① 学习并掌握改进秃鹰算法在复杂优化问题中的应用方法;② 实现微电网群经济调度模型的构建与求解;③ 对比不同智能算法在电力系统优化中的性能表现;④ 为科研论文复现、课题研究或工程项目提供算法支持与代码参考。; 阅读建议:建议读者结合文中提供的Matlab代码逐模块分析,重点关注算法改进策略与调度模型的耦合实现方式,同时可尝试在不同参数设置或场景条件下进行仿真实验,以加深对算法性能与调度效果的理解。
内容概要:本文围绕多旋翼无人机姿态估计算法的开发与性能评估展开系统性研究,重点对比了线性与非线性滤波算法在复杂飞行环境下的表现。通过构建基于扩展卡尔曼滤波(EKF)、无迹卡尔曼滤波(UKF)等先进算法的姿态估计器,融合IMU、磁力计、视觉传感器等多源数据,有效提升了姿态解算的精度与鲁棒性。研究涵盖了静态悬停、高速机动及磁干扰等多种典型飞行场景,利用MATLAB/Simulink平台完成仿真实验,并结合实测飞行数据与VICON高精度运动捕捉系统提供的真值进行定量分析。结果表明,非线性滤波器在动态工况下具有显著优势,尤其在抑制漂移和抵抗外部干扰方面优于传统线性方法。文章还提出了传感器融合、自适应建模、冗余配置等一系列降低偏差影响的技术路径,为高可靠性无人机导航系统的设计提供了理论依据与实践指导。; 适合人群:具备控制理论、信号处理及状态估计基础知识,从事无人机导航、控制算法研发或相关领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①用于开发高精度无人机姿态解算模块;②为多传感器融合算法的设计、实现与验证提供参考案例;③服务于复杂环境下无人系统状态估计的教学演示与科研攻关; 阅读建议:建议结合文中所述MATLAB/Simulink仿真模型与实测数据集进行复现与调试,重点关注EKF与UKF的数学推导、实现细节及关键参数调优过程,深入理解非线性系统建模、状态估计与工程实际之间的平衡与折衷。

67,535

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧