要求方法的入参为6*6的棋盘二维数组,返回值为具体的移动计划,语言用Java
在一个6*6的棋盘上,有zf(张飞),gy(关羽),zg(诸葛),mt(木头),xz(箱子)四种元素,每种元素有0到4级,例如
zf0 xz0 gy0 zf0 zg1 mt0 zg0 gy0 zg0 mt0 mt0 xz0 zg0 xz0 xz0 zg0 zf0 mt0 gy0 zf0 gy0 xz0 xz0 zf0 mt0 gy0 zf0 xz0 mt0 mt0 zg0 gy0 zg0 zf0 mt0 mt0初始有8步,可以上下左右交换相邻元素,每次交换消耗1步,当行或者列内有3个或者以上相同元素时自动合成下一级,空出来的位置由下面的元素一次填补,最下方随机生成新的元素
可以将元素移动到左右边缘,再往外移动一步将元素移出棋盘,上下边缘不能移出元素
步数:交换一次消耗一步;合成超过3个可获得额外步数,公式为(合成元素个数-3)*3^等级;使用xz可获得额外步数,1级的获得2步,2级的获得12步,三级的获得70步,四级的获得320步,即等级越高获得的步数越多
步数为1时可以选择使用xz,步数为0时游戏结束,步数为3000时游戏通关
思路(但不一定是最佳的,可参考):目标是合成高等级的xz,最高是4级的时候在使用,获得的步数最多,在中途有可能步数已经为1了,不能支撑合成4级箱子,这时候选择使用箱子;可以将xz之外的元素合成到一定等级后移出棋盘,腾出更多的空间,这样就有机会生成出0级的xz,比如讲边缘的3个0级的zf移出需要消耗3步,如果能一步合成1的zf则合成消耗1步,移出消耗1步,总共消耗2步,最多一次可合成7个元素,如果将7个元素逐个移出需要将每个元素都移出到边缘,再每个元素都消耗一步移出棋盘,消耗的步数应该会多,如果合成为一个元素,一方面获得了额外的步数,另一方面只需要将合成后的一个元素移出,应该消耗的步数要少
基本消除形态
7连只有一种形态
0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 06连形态也只有一种形态
0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 05连形态(3种)
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 04连形态
0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 03连形态
0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
变异消除形态:对基本消除形态旋转90度,180度,270度水平翻转,垂直翻转后可以得到变异的消除形态,基本形态+变异消除形态为完整的消除形态
求一java代码实现,能实现效果可额外支付报酬