關於回朔算法

回朔法是計算機程序設計中通用的算法

 

隨着計算機性能越來 越好,窮舉已經成爲了解決問題的一個有效地途徑。

在窮舉途徑中採用回朔的方法,關鍵是要設計好剪枝方法。

 

通用的回朔法的程序模板如下(《挑戰編程》)

 

採用這個算法框架來編寫經典的

n皇后問題,輸出皇后的排列方式和總的排列數目

 

一個簡單的枚舉排列的程序,會說的方法

 

 

 

 

比較早的時候寫的n皇后題目

 

實際上,這樣輸出是有問題的。時間的大部分都浪費在了io上了。可以嘗試一個12,然後去掉和不去掉print的句子。

 

棋盤移動問題,5*5的棋盤上有24個棋子,有一個空位,棋子都不相同,現在隨意的移動空位,只知道棋盤的初始狀態和終止狀態,以及每一種移動方法的次數,例如上5次等,求是否存在這樣一個序列,如果存在,輸出該序列,否則輸出0

 

該題目的剪枝條件爲

1,橫向移動步數之和與初始座標之和爲目標座標,同理縱向移動步數

2,每個方向的移動步數小於等於該方向最大的步數

3,每次移動不能超過邊界

 

算法爲典型的回朔法

 

 

輸入如下

 

20 18 7 19 10

24 4 15 11 9

13 0 22 12 14

23 16 1 2 5

21 17 8 3 6

 

20 18 7 19 10

24 15 11 12 9

13 4 22 2 14

23 16 0 1 5

21 17 8 3 6

 

1 2 1 2

 

得到的輸出如下

U R R D D L

請按任意鍵繼續. . .

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章