leetcode752 開啟轉盤鎖

2022-08-27 19:51:09 字數 487 閱讀 6237

我們可以將 0000 到 9999 這 10000 狀態看成圖上的 10000 個節點,兩個節點之間存在一條邊,當且僅當這兩個節點對應的狀態只有 1 位不同,且不同的那位相差 1(包括 0 和 9 也相差 1 的情況),並且這兩個節點均不在陣列 deadends 中。那麼最終的答案即為 0000 到 target 的最短路徑。

破解密碼的問題就像是乙個樹搜尋的問題,把每一種一步變換的結果都放在該初狀態的子節點裡

(用deadends和visited進行剪枝,deadends用於去掉包含死路的解法,visited用於避免已經走過的路)

然後再去搜尋這個target,搜尋的深度就是最短的步數

可以用bfs來實現

class

solution

}//位上減一

for(int j=0;j<4;j++)}}

step++;

}return -1

; }

};

leetcode 752 開啟轉盤鎖

752.開啟轉盤鎖 你有乙個帶有四個圓形撥輪的轉盤鎖。每個撥輪都有10個數字 0 1 2 3 4 5 6 7 8 9 每個撥輪可以自由旋 例如把 9 變為 0 0 變為 9 每次旋轉都只能旋轉乙個撥輪的一位數字。鎖的初始數字為 0000 乙個代表四個撥輪的數字的字串。列表 deadends 包含了一...

開啟轉盤鎖(LeetCode 752)

你有乙個帶有四個圓形撥輪的轉盤鎖。每個撥輪都有10個數字 0 1 2 3 4 5 6 7 8 9 每個撥輪可以自由旋 例如把 9 變為 0 0 變為 9 每次旋轉都只能旋轉乙個撥輪的一位數字。鎖的初始數字為 0000 乙個代表四個撥輪的數字的字串。列表 deadends 包含了一組死亡數字,一旦撥輪...

leetcode 752 開啟轉盤鎖

目錄你的鼓勵也是我創作的動力 你有乙個帶有四個圓形撥輪的轉盤鎖。每個撥輪都有10個數字 0 1 2 3 4 5 6 7 8 9 每個撥輪可以自由旋 例如把 9 變為 0 0 變為 9 每次旋轉都只能旋轉乙個撥輪的一位數字。鎖的初始數字為 0000 乙個代表四個撥輪的數字的字串。列表 deadends...