一、最短路问题介绍与解法
只要每一次变化都只变化一个数据,就是最短路问题。
与单源BFS不同,最短路问题是要找到最少的变化次数来达到变化之后的结果,此时如果像单源BFS一样一次只出一个队头元素显然是不合理的。我们要一次出一层元素,上一次有多少个“变化一次”的数据入队,就要把他们全部出队,这样才是一次出一层。
二、理解“变化一次”
以 基因的最小变化 为例

我们读题找到一个关键词叫做“一次基因变化”,所以就符合变化一次。
所以这道题的思路就是把每一次出队的字符串在他以前的变化基础上再变化一次,若直接得到结果就返回,否则把变化后的基因与基因库中的基因比较,有就加入队列,所以当队为空,但是还未返回结果就说明基因库中没有结果,返回-1

细节
(1)一定要特判两个点:若基因库中一开始就没有最后的结果就要返回-1,若一开始和最后的基因一样就要返回0。因为我们设置的返回结果从0开始,一开始一定入队就会+1,最后不特判一定不会返回-1和0
(2)一定不要忘记判断是否遍历过相同基因,不然会死循环。
三、例题


584

被折叠的 条评论
为什么被折叠?



