DFS起点为end,终点为start,从end回溯至start。
对于end,
- 若end为无效基因序列,则直接返回-1;
- 若end为有效基因序列,则进行DFS:存在路径(将会更新ans值)则返回ans,不存在路径(未更新ans值)则返回-1。
DFS算法思路:
对于当前遍历基因序列结点end,遍历bank数组,寻找尚未加入到路径(即未访问)并且变换一次可到达的基因序列s(即可进行DFS的下一结点),将s加入到路径(即设为访问),路径数加一(即count+1),再进行DFS,对结点s进行完DFS遍历后,将结点移出路径(即从在vis中删除)。
DFS的结束存在两种情况:
- 一是start==end,这种情况为start在bank基因库中,并存在start到end的路径,那么我们只需判断当前路径数是否为变化次数最少路径 ,若是,则更新最少变化次数。
- 二是isValid(start,end)为真,即当前遍历结点下一步即可到达start,这种情况为无论start是否在bank基因库中,都存在start到end的路径,那么我们只需