编程之美 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

 

 

posted @ 2014-02-27 09:27  SangS  阅读(453)  评论(0编辑  收藏  举报