第三題 3 × 3數字推盤 ( 八方塊遊戲 )

問題描述
       在 3×3 大小的棋盤上,有 8 個數字方塊及 1 個空格。棋盤上,只能讓跟空格相鄰的數字方塊滑動到空格中,每滑動 1 次是為 1 步。請對任一情況盤面,使用最少的滑動次數,將棋盤數字依序排列為:由左上角開始,由左到右、由上到下數字漸增。下方左圖為一棋盤輸入範例,該盤面以數列: " 1 4 2 0 3 5 6 7 8 " 表示,其中數字 0 表示空格;右圖則為依指定順序排列
好數字方塊的結果。
請找出最少要滑動幾次才可以排好,若滑動次數超過 31 次則以 -1 表示無解。

142
 35
678
  1 2
3 4 5
678

輸入說明
輸入 9 個在 0 ~ 8 之中不重複的整數,以 0 表示輸入盤面上的空格,數字間以空格隔開。

輸出說明
輸出排好該輸入盤面,所需要的最少步數;若無解或移動次數需超過 31 次,則輸出 -1 。

範例
輸入輸出
1 4 2 0 3 5 6 7 83
6 3 5 7 1 0 4 2 815
8 7 6 0 4 1 2 5 331
7 2 0 5 4 6 8 3 1-1