1. 程式人生 > >Eight HDU - 1043 bfs+康託展開

Eight HDU - 1043 bfs+康託展開

這題是一道裸的八數碼問題,用 0 表示空格,相當於一共有9個數字,012345678,9個數字共9!種排列。
剛開始我使用map<string ,bool> 作為 visit 陣列。
5s 都t了。百度了才知道這題要用康託展開作為visit陣列。

  • 網上居然還有一種東西叫 八數碼的八大境界,感興趣的可以自行搜尋一下。
  • 我看了一下我果然在第一重境界。我用map + stl 來做八數碼問題,9! = 362880 使用map作為visit陣列,map的內部實現是紅黑樹,訪問和查詢的時間都是 log(n) , log(362880) <6 , 使用這種方式實現 visit陣列,程式執行的時間複雜度為 n*log(n) < 6 * 362880 = 2177280

    10e7 的時間複雜度,還是有點搞不懂為什麼5s也會t ?