打豆豆最优解算法

jiashie 2016-11-08 09:45:38

规则:一个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个。

本来想着用暴力遍历的方法,但试了一下,数据量太大。
...全文
272 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2016-11-09
  • 打赏
  • 举报
回复

33,006

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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