前几天看了下A*算法,发现并不能实现连连看。A*算法是寻找最短路径的一种高效率的算法,而连连看的路径并不一定是最短的。
连连看的路径最多只能转折3次,因此判断两点的可延伸点是否有重复的,如果有,(转折为0或1)可消除,如果没有,再判断每个延伸点的延伸点与目标点的延伸点是否有重复的,有则表示可以消除并且转折了3次,没有则不成功。
如图 A→B X表示未消除的 0为A的延伸点,已经消除的 1为B的延伸点 2、3为相应0的延伸点
X | X | X | 1 | X | |
X | X | 1(2) | 1 | B | 1 |
X | A | 0 | X | 1 | X |
X | 0 | X | X | 1 | X |
X | 0 | 3 | 3 | 1(3) | X |
X | 0 | X | 1 |
可以看出A→B 有两条路径,再判断下路径长度,就可以得到最短的路径了。