该回溯算法的关键是在最后剩余牌数只有两张的情况下,进入计算最大解函数calucateMax。当遇到一张牌不能继续连接下去时,把该张牌的名字保存在popNodeName数组中,表示在下次回溯计算时不再考虑到popNodeName数组中的牌,然后向上回溯。如果回溯到的是接龙队列的首张牌时,则需要调转这一张牌并重新计算,通过牌数据结构中的flag字段进行标记是否已经调转。
三、实验及结果
本实验程序通过javascript编写,并通过相关web技术在网页中进行演示。如图 (四)所示,为初始界面。
图(四)
只要把所展示的牌依次拖入下方虚线小框中,然后点击自己接龙,就可以计算出一个最大解。为了便于测试,也可以先点击随机取牌,随机分配八张牌到虚线小框中进行计算。计算结果,如图(五)所示。
图(五)
四、总结
牌九类游戏是民间广泛流传的一种棋牌类游戏,若可以把更多的此类游戏移植到各种互联网游戏平台,其带来的潜在商业价值将无法估量。本文使用回溯算法进行自动接龙为此游戏的移植提供了游戏机器人算法的理论研究基础。
另外,本实验程序基于脚本语言javascript实现,尚存在许多可以优化的地方。
参考文献:
1.科曼等。算法导论[M] 机械工业出版社 2006