- 6
- 0
- 约7.21千字
- 约 25页
- 2016-12-02 发布于湖北
- 举报
4-2 Example 假如给你一张地图,’o’代表可以行走的道路,’#’代表墙壁。问你从a走到r最短的路的长度为多少? 7 8 #o#####o #oa#ooro #oo#oooo oo#oo#o# #ooo##oo o#oooooo oooooooo 如果使用DFS,那么我们就需要遍历出所有可能从a到r的路径,并找出最小的值,但如果是使用BFS,我们只要直接输出找到的第一条符合条件的路径长度就可以了。 为什么? 4-3 Example 很明显我们可以把地图上的每个点都作为一个结点,可以定义一个结构体node{int x,y,length;}x为点的横坐标,y为点的纵坐标,那么length就代表从起点到这个点的路径长度 然后我们遍历这张图,找到并记录起点和终点所在的坐标 将起点放入队列中 当队列不为空的时候,我们拿出队列首部的结点,注意是拿出。也就是一个front()加一个pop(); 然后对拿出的结点进行判断,如果它是终点,那么直接输出答案,并终止。 如果不是那么对它标记后,往四个方向扩展。那么由当前点扩展出的四个点的length值将是当前点length值+1; 4-4 Code node a; a.x=i; a.y=j; a.length=0; Q.push(a); While(!Q.empty()) { a=Q.front(); Q.p
原创力文档

文档评论(0)