- 1、本文档共49页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PASCAL递归和回溯算法
递归与回溯算法 山东省实验中学 王乃广 判断(x,y)位置能否放数值k的函数 function ok(x,y,k:integer):boolean; begin ok:=true; if x1 then if not (p[b[x-1,y]+k]) then ok:=false; if y1 then if not (p[b[x,y-1]+k]) then ok:=false; end; procedure try(x,y,dep:integer);//递归搜索(x,y)处放第 dep 个数 var i:integer; begin if dep=n*n+1 then print else //如果已放了n*n个数,得出一种方法 for i:=1 to n*n do if not(used[i]) and ok(x,y,i) then begin b[x,y]:=i; used[i]:=true; if y=n then try(x+1,1,dep+1) //如果当前是最右边一列,则转到下一行首列 else try(x,y+1,dep+1); //继续放当前行的下一列 used[i]:=false; //释放标志 end; end; procedure print; var i,j:integer; begin for i:=1 to n do begin for j:=1 to n do write(b[i,j]:4); writeln; end; halt; end; 主程序: begin readln(n); if n=1 then begin writeln(NO);halt;end; prime; b[1,1]:=1; for i:=2 to n*n do used[i]:=false; used[1]:=true; try(1,2,2); writeln(NO); end. 例 单词接龙(NOIP2000) 单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们己知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的龙(每个单词都最多在龙 中出现两次),在两个单词相连时,其重合部分合为一部分,例如beast和astonish,如果接成一条龙则变为beastonish,另外相邻的两部分不能存在包含关系,例如at和atide间不能相连。 【输入】 输入的第一行为一个单独的整数n(n=20)表示单词数,以下n行每行有一个单词,输入的最后一行为一个单个字符,表来“龙”开头的字母,你可以假定以此字母开头的龙一定存在。 【输出】 只需输出以此字母开头的最长的“龙”的长度。 【样例输入】 5 at touch cheat choose tact a 【样例输出】 23 //连成的“龙”为atoucheatactactouchoose 【分析】 深度优先搜索。第一步选择以某一个单词为龙头,确定以后将记录单词使用次数的数组清零,作为龙头的单词使用次数加一,然后每次判断是否可以再连接单词,如果可以,向下继续递归搜索,否则判断是否需要更新最优解。 【参考程序】 program shdj; var a:array[1..21] of integer; i,m,n,ans,k:longint; b:array[1..21] of string; s,dra:string; c:char; * * 递归的定义: 在定义一个过程或函数时出现调用本过程或本函数的成分,称为递归。若调用自身,称为直接递归。若过程或函数p调用过程或函数q,而q又调用p,则称为间接递归。 在程序设计中,使用递归技术往往使函数的定义和算法的描述简洁且易于理解。 例: function jiech(n:integer):longint; begin if n=0 then jiech:=1 else jiech:=n*jiech(n-1); end; function fib(n:integer):longint; begin if(n=0)or(n=1)then fib:=1 else fib:=fib(n-1)+fib(n-2); end; 爬楼梯时可以1次走1个台阶,也可以1次走2个台阶。对于由n个台
您可能关注的文档
- Module1MyFirstDayatSeniorHighPeriodFourCulturalCorner课件[外研版必修1,课标通用].ppt
- MIS01管理信息系统的定义及概念.ppt
- Lecture_网络建模.ppt
- MBOS训练:业务基本功[5.12]压缩.ppt
- Modigliani_Miller理论.ppt
- Module4Unit1外研版英语8年级下册.ppt
- multisim仿真教程数据选择器和其应用.ppt
- MATLAB运用第11章.ppt
- MUJI设计美学_PPT.ppt
- MODIS数据与产品概况_王正兴.ppt
- 2022年11月连江县直机关遴选公务员面试真题带答案详解.docx
- 2022年11月遵义市直遴选面试真题回忆版.docx
- 2022年2月伊春市税务系统遴选面试真题回忆版.docx
- 2022年11月朔州市税务系统遴选面试真题回忆版汇总.docx
- 2022年2月秦皇岛市税务系统遴选面试真题回忆版汇总.docx
- 2022年2月焦作市直机关遴选公务员面试真题附详解.docx
- 2022年11月黑龙江省直机关遴选公务员面试真题附详细解析.docx
- 2022年2月潍坊市直机关遴选公务员面试真题附解析.docx
- 2022年2月大同市直遴选面试真题附详解.docx
- 2022年2月巴音郭楞蒙古自治州直机关遴选公务员面试真题带题目详解.docx
最近下载
- 微能WIN-9变频器说明书使用手册.pdf
- 支气管扩张临床路径.docx VIP
- 长方体、正方体表面积和体积专项练习50题(有答案)ok .pdf VIP
- 吉林省长春市东北师范大学附属中学净月实验学校2023-2024学年高一上学期期中质量监测数学试卷(解析).docx VIP
- 2025至2030年中国拉面粉行业投资前景及策略咨询研究报告.docx
- 人教版一二三年级生字表(全) .pdf VIP
- 22J403-1 楼梯 栏杆 栏板(一) (3).pdf VIP
- 高校学科建设的概念与内涵 .pdf VIP
- T∕ZZB 1299-2019 电动剃须刀用提拉须圆刀.docx VIP
- 鲁教版五四制六年级数学下册第七章达标检测卷附答案 .pdf VIP
文档评论(0)