关于回朔算法

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

 

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

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

 

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

 

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

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

请按任意键继续. . .

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值