day53-馬踏棋盤( 二 )


day53-馬踏棋盤

文章插圖
4.優化
day53-馬踏棋盤

文章插圖
  1. 根據上面的代碼,當前點走的下一個位置 , 是按照我們的順時針方向來挑選位置的,因此,所選擇的點的下一個可以走的位置的個數是不確定的
  2. 優化的思路是:我們應該優先選擇的下一個位置,這個位置的再下一個位置應該盡可能少 , 這樣就可以減少回溯的次數
  3. 代碼:對ps集合按照可以走的下一個位置的次數進行升序排序(從小到大排序)
修改:
  1. 編寫方法
//寫一個方法,對ps集合的各個位置 , 可以走的下一個位置的次數進行排序,把可能走的下一個位置從小到大進行排序public static void sort(ArrayList<Point> ps){ps.sort(new Comparator<Point>() {@Overridepublic int compare(Point o1, Point o2) {return next(o1).size()-next(o2).size();}});}
  1. 在遞歸中調用該方法,對ps集合按照可以走的下一個位置的次數進行升序排序(從小到大排序)

day53-馬踏棋盤

文章插圖
優化結果:
day53-馬踏棋盤

文章插圖

推薦閱讀