- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数的全排列问题
1 对于指定的n个数字,输出它所有可能
的排列。
容易知道n个数字恰有n!个排列。 2
3 它有一个隐含的约束条件:每个
数字用且只能用一次。
数的全排列问题
全排列问题的解空间树
设n=4 ,而需要排列的4个数字分别为:1,2 ,3 ,4。回顾
我们手工对这四个数字的排列过程:
(1 2 3 4) 1
(1 2 4 3) 1 2 3 4
…
…
(1 3 2 4) 1 2 3 4 1 2 3 4 1 2 3 4
(……………)
1 2 3 4 1 2 3 4 1 2 3 4
(4 3 2 1)
1 2 3 4 1 2 3 4 1 2 3 4
全排列问题中的数据表示
数组rec[n+1]记 数组used[n+1]
录当前搜索路径 记录当前搜索
上的每个结点所 路径上已经被
放置的数字; 使用过的数字;
用递归回溯法求N数全排列问题
先回顾递归回溯法的一般形式:
Try(s){
做挑选候选者的准备;
while (未成功且还有候选者) {
挑选下一个候选者next ;
if (next可接受) {
记录next ;
if (满足成功条件) {成功并输出结果}
else Try(s+1);
if (不成功) 删去next的记录; }}
return 成功与否}
用递归回溯法求N数全排列问题
Try(s){ s为准备放置数字的位数
令数字从j = 0 开始;q=0表示未成功。
候选者为数字1到n。
数字不到n就还有候选者
做挑选候选者的准备; 数字加1
j = 0; q = 0;
(!q j n ) { 若数字没有使用过,便可接受
while (未成功且还有候选者) {
挑选下一个候选者next ;
j++; 记下该位置的数字
(used[j](Safe(j)) {0) {
if (next可接受) {
n个位置都放完就成功了
Record (s,j);
rec[s]=j; used[j]=1;
记录next ;
(s = = n) {q = 1; output( rec );}
if (满
您可能关注的文档
- 2-1递归-递归主要思想.pdf
- 2-2递归-常见的递归形式.pdf
- 2-3 中断计算机应用基础.pdf
- 2-4递归-递归方法小结.pdf
- 3-1分治法-基本思想.pdf
- 3.1二进制编码计算机应用基础.pdf
- 4-1贪心-基本思想.pdf
- 3-11 反置页表计算机应用基础计算机应用基础.pdf
- 3-10 页面调度计算机应用基础.pdf
- 4-2贪心-贪心选择性质.pdf
- 中国行业标准 GM/T 0126-2023HTML密码应用置标语法.pdf
- 《JJF 2121-2024恒转速源校准规范》.pdf
- 餐饮服务中20条处理要点.docx
- 《GM/T 0011-2023可信计算 可信密码支撑平台功能与接口规范》.pdf
- 《JJF 2134-2024旋转流变仪校准规范》.pdf
- JJF 2121-2024恒转速源校准规范.pdf
- 计量规程规范 JJF 2121-2024恒转速源校准规范.pdf
- 《JJF 2118-2024压力式六氟化硫气体密度控制器校验仪校准规范》.pdf
- JJF 2134-2024旋转流变仪校准规范.pdf
- 计量规程规范 JJF 2134-2024旋转流变仪校准规范.pdf
文档评论(0)