关于回朔算法

回朔法是计算机程序设计中通用的算法

 

随着计算机性能越来 越好,穷举已经成为了解决问题的一个有效地途径。

在穷举途径中采用回朔的方法,关键是要设计好剪枝方法。

 

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

 

采用这个算法框架来编写经典的

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

请按任意键继续. . .

 

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