最近孩子去朋友家做客,喜欢上了一个玩具,网上找了好久都没找到,后来问朋友给了个链接,发现是上市不久的益智类游戏玩具。
先上个图
开机之后有500关,难度越来越大,在朋友家玩的第3关,小孩子们都拼不上,然后我们家长大孩子们也一起参与,搞了几分钟才拼好,发现这个游戏真的不简单哟。
在回家的路上我就在想,这个游戏能不能通过写一段代码来解决呢。说干就干。干完了给孩子买这个玩具,然后搞不定了跑跑代码然后炫耀一番
然后就搞完了,代码跑了3个小时49分,也难怪,对于暴力尝试方式,大概有1.8亿以上的尝试次数。
然后优化算法:
1. 剪枝算法
2. 并发执行
程序执行减少到了2分钟,满意!
直接上第500关解法
499关解法
说说暴力破解方法:
1. 棋盘有8 * 8,也就是一个二维数组,初始状态都是0
2. 填入目标性状,并且将对应位置 ➡️ 置为1。
3. 一共12个形状,除了填入的关卡形状块,还剩下9块,正方形1个方向,矩形2个方向,异形4个方向。
4. 每一个块都从二维数组开始遍历,但是没必要遍历64次(你们懂的)
5. 只要都放下,或者二维数组都是1就是结束条件。
6. 选择深度优先算法的朋友记得用stack作为数据结构。
7. 暴力的种类主要有剩余9个形状块的顺序的全排列,对于每一个形状块又有方向,也就是全组合。
最后,其实身为一个老父亲,还能够对代码有些许执着,算是一种情怀了!