4. 迷宫求解 (穷举法) 教案.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
精品PPT课件资料

从入口到出口的路径算法 设当前位置的初值为入口位置; do{ 若当前位置可通,则{ 将当前位置插入栈顶; 若该位置为出口位置,则结束; 将该位置的东邻块置为当前位置; } 否则{ 若栈不空且栈顶位置尚有其它方向未经探索,则 设定新的当前位置为栈顶位置的下一相邻块; 若栈不空但栈顶位置的四周均不通,则 删去栈顶位置; 若栈不空,则 重新测试新的栈顶位置,直至找到一个可通的 相邻块或栈至栈空; } }while(栈不空) #3*(7-2)# 步骤 OPTR栈 OPND栈 输入字符 主要操作 # 3*(7-2)# PUSH(OPND,’3’) # 3 *(7-2)# PUSH(OPTR,’*’) #* 3 (7-2)# PUSH(OPTR,’(‘) #*( 3 7-2)# PUSH(OPND,’7’) #*( 37 -2)# PUSH(OPTR,’-’) #*(- 37 2)# PUSH(OPND,’2’) #*(- 372 )# operate(‘7’,’-’,’2’) #*( 35 )# POP(OPTR) #* 35 # operater(‘3’,’*’,’5’) # 15 # RETURN 中缀表示法:3*(7-2) 表示法:372-* 思想(后缀):自左至右扫描,如是操作数,则入栈,遇到运算符,则连续两次出栈,进行相应运算。 1. 递归的概念: 一个过程(或子程序,函数)在完成之前又直接或间接地调用自己,则称之为递归过程(或子程序,函数)。 若直接调用自己称为直接递归,若通过其它函数并由后者反过来调用前者,成为间接递归。 2. 递归不是一种数据结构,而是一种算法设计方法。 3. 以下三种情况,常用到递归方法 数学函数是递归定义的 求解阶乘 n! 的过程 数据结构是递归的 问题的解法是递归的 例如,汉诺塔(Tower of Hanoi)问题 解决汉诺塔问题的算法 void Hanoi (int n, char A, char B, char C ) { if ( n == 1 ) cout “ Move disk” n“from”A “to ” C endl; else { Hanoi ( n-1, A, C, B ); cout “Move disk” n“from”A “to” C endl; Hanoi ( n-1, B, A, C ); } } 4. 递归设计 对原问题f(s)进行分解,给出合理的较小问题f(s’); 假设f(s’)是可解的,在此基础上确定f(s)的解,给出f(s)与f(s’)之间的关系; 确定一个特定情况的解,由此作为递归出口。 含一个递归调用的递归过程的一般形式 void p(参数) { if(数据为递归出口) 操作; else{ 操作; p(参数); 操作; } } 5.递归调用的内部实现原理 (1)一般函数调用 运行被调用函数之前 实在参数,返回地址传给被调用函数保存; 为被调用函数的局部变量分配存储区; 将控制转移到被调用函数入口,

文档评论(0)

沃爱茜 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档