编程之美 set 19 连连看游戏设计

题目

1. 怎么用简单的计算机模型来描述这个问题 ?

2. 怎么判断两个图像是否能相消

3. 怎么求出相同图形之间的最短距离(转弯数最少)?

4. 怎么确定目前处于死锁状态? 如何设计算法来解除死锁?

分析

1. 在经典最短路径算法中, 需要求出经过格子最少的路径, 而这里, 为了保证转弯数最少, 需要把路径问题的目标函数改成从一个点到另一个点最少的转弯数. 虽然算法的目标函数改了, 但是算法的框架仍然不变. 

2. 假设现在要解决图形 A 和图形 B 之间的最短路径问题

4. 在练练看的最外层加上空白的一层格子

5. 首先把图形 A(x1,y1) 加入到队列中, 然后扩展A可以直线到达的格子, 假设这些格子的集合是 s0, s0 = Find(x1, y1). 如果图形B 在 s0 中, 则搜索结束, AB可以直线相连

6. 否则再从 s0 开始, 再进行 BFS

原文地址:https://www.cnblogs.com/xinsheng/p/3570752.html