- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
递归函数与递归过程的定义 递归的边界条件(终止条件) 会读递归程序 用递归实现回溯算法(深度优先搜索) 递归的应用 Hanoi(汉诺塔)问题 跳马问题 迷宫问题 N皇后问题 借书问题 自然数n的分解 procedure dfs(i:integer); var j,x,y:integer; begin if (b[i,1]=1)and(b[i,2]=n) then if imin then begin min:=i;ans:=b;end; for j:=1 to 8 do begin x:=b[i,1]+dx[j]; y:=b[i,2]+dy[j]; if a[x,y] then begin b[i+1,1]:=x; b[i+1,2]:=y; a[x,y]:=false; dfs(i+1); a[x,y]:=true; end; end; end; if (not((b[i,1]=1)and(b[i,2]=n)))and(i=min) then exit; [问题描述] 在n×n的国际象棋盘上,放置n个皇后,使任何一个皇后都不能吃掉另一个,要使任何一个皇后都不能吃掉另一个,需满足的条件是:同一行、同一列、同一对角线上只能有一个皇后。求放置方法. 如:n=4时,有以下2种放置方法. 四、N皇后问题 输出: 1: 2 4 1 3 2: 3 1 4 2 * * * * 1 2 3 4 1 2 3 4 * * * * 1 2 3 4 1 2 3 4 (2 , 4 , 1 ,3) (3, 1 ,4 ,2) 方法一:分析: 1、问题解的形式: x:array [1..maxn] of integer; {x[i]:第i个皇后放在第i行,第x[i]列,保证所有皇后不同行} 问题的解变成求(x[1],x[2],。。。X[n]) 4皇后问题的解: (2,4,1,3), (3,1,4,2) * * * * 1 2 3 4 1 2 3 4 * * * * 1 2 3 4 1 2 3 4 2、放置第k(1=k=n)个皇后的递归算法: procedure dfs(k); {搜索第k个皇后所在的列x[k]=?,前k -1个已放好,即已求得x[1]…x[k-1] } var i:integer; begin if k=n+1 then print(输出放置方案:数组x); for i:=1 to n do {搜索第k个皇后所在的列i} if 第k个皇后能够放置在第i列 then begin 放置第k个皇后在第i列(x[k]=i); dfs(k+1); end; end; 3、怎样判断:第k个皇后能否放置在第i列 : function place(k,i:integer):boolean; {第k个皇后能否放在第i列} var j:integer; begin for j:=1 TO K-1 do if (x[j]=i) or (abs(x[j]-i)=abs(j-k)) then exit(false) exit(true); end; * * 递归的应用初步 递归的概念: 一个过程(或函数)直接或间接调用自己本身,这种过程(或函数)叫递归过程(或函数). 问题的提出: Hanoi塔由n个大小不同的圆盘和3根木柱1,2,3组成。开始时,这n个圆盘由大到小依次套在1柱上,如图所示。 现在要求用最少的移动次数把1柱上n个圆盘按下述规则移到3柱上: (1) 一次只能移一个圆盘; (2) 圆盘只能在3个柱上存放; (3) 在
文档评论(0)