773 滑動謎題

2021-09-23 06:02:18 字數 851 閱讀 3805

在乙個 2 x 3 的板上(board)有 5 塊磚瓦,用數字1~5來表示, 以及一塊空缺用0來表示.

一次移動定義為選擇0與乙個相鄰的數字(上下左右)進行交換.

最終當板board的結果是[[1,2,3],[4,5,0]]謎板被解開。

給出乙個謎板的初始狀態,返回最少可以通過多少次移動解開謎板,如果不能解開謎板,則返回 -1 。

示例:

輸入:board = [[1,2,3],[4,0,5]]

輸出:1

解釋:交換 0 和 5 ,1 步完成

輸入:board = [[1,2,3],[5,4,0]]

輸出:-1

解釋:沒有辦法完成謎板

輸入:board = [[4,1,2],[5,0,3]]

輸出:5

解釋:最少完成謎板的最少移動次數是 5 ,

一種移動路徑:

尚未移動: [[4,1,2],[5,0,3]]

移動 1 次: [[4,1,2],[0,5,3]]

移動 2 次: [[0,1,2],[4,5,3]]

移動 3 次: [[1,0,2],[4,5,3]]

移動 4 次: [[1,2,0],[4,5,3]]

移動 5 次: [[1,2,3],[4,5,0]]

輸入:board = [[3,2,4],[1,5,0]]

輸出:14

LeeCode 773 滑動謎題

在乙個 2 x 3 的板上 board 有 5 塊磚瓦,用數字1 5來表示,以及一塊空缺用0來表示.一次移動定義為選擇0與乙個相鄰的數字 上下左右 進行交換.最終當板board的結果是 1,2,3 4,5,0 謎板被解開。給出乙個謎板的初始狀態,返回最少可以通過多少次移動解開謎板,如果不能解開謎板,...

2020 5 leetcode 773 滑動謎題

1.關鍵點 利用編碼函式,將矩陣變為整數,作為儲存的狀態。再利用解碼函式,將狀態變為矩陣,進行bfs 新狀態的遍歷。進行bfs遍歷來找到最小移動次數。class solution intslidingpuzzle vectorint board int ans bfs x,y,board retur...

Leetcode 773 滑動謎題 C

在乙個 2 x 3 的板上 board 有 5 塊磚瓦,用數字 1 5 來表示,以及一塊空缺用 0 來表示.一次移動定義為選擇 0 與乙個相鄰的數字 上下左右 進行交換.最終當板 board 的結果是 1,2,3 4,5,0 謎板被解開。給出乙個謎板的初始狀態,返回最少可以通過多少次移動解開謎板,如...