我正在解决BFS上的问题。我能够通过邻接列表在C中实现BFS算法,但我遇到了这个问题: 我必须告诉我是否有可能从迷宫的起点到迷宫的终点。单元格包含0或1.给予它不能通过包含值1的单元格和之间的移动的限制只有当两个单元共享一个公共边时,它们才有可能。 那么如何在不使用邻接列表的情况下直接在这里实现BFS呢?
答案 0 :(得分:2)
您不必将图形的显式表示作为BFS的邻接列表。从每个单元格(x,y)
,您知道哪4个潜在邻居(x-1, y)
,(x, y-1)
,(x+1, y)
和(x, y+1)
。我说potential
因为他们中的任何一个都可能从桌子上掉下来而不是邻居。现在简单地用一对整数标识每个顶点 - 它的坐标和队列中的推对。当从队列中弹出时,使用我上面所说的来访问四个可能的邻居。
希望这足以帮助您 - 我可以提供完整的代码,但您最好自己编写代码。