数据结构第12讲--农夫过河问题.pptx

  1. 1、本文档共36页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第4章 栈与队列 第12讲:农夫过河问题;回顾;栈、队列的应用: 农夫过河问题;1. 农夫过河问题;1. 农夫过河问题;1. 农夫过河问题;1. 农夫过河问题;初始状态:农夫、狼、白菜、羊 在河的南岸;;2. 方案1;2. 方案2;通过农夫划船(每次可带1件物品) 不断改变状态 ?每次仅改变农夫及其所带物品的状态;农夫过河问题;初始状态—全部在南岸;1) 带羊到北岸;2) 空手回南岸;3) 带菜到北岸;4) 带羊回南岸;5) 带狼到北岸;6) 空手回南岸;7) 带羊到北岸;农夫过河问题;判断状态的安全性;个体位置的提取;比较个体位置?判断状态的安全性;农夫过河问题;状态变化的合法性;记录状态使用情况的数组: route;route数组:记录“值等于下标的状态” 从哪个状态一步走来;广度优先:;1;基于队列的广度优先搜索;void farmerProblem(); { int movers, m=16; int location, newlocation; int route[16]; PSeqQueue moveTo; moveTo=createEmptyQueue_seq(int m); for(i=0; i<16; i++) route[i] = -1; enQueue_seq(moveTo, 0x00); route[0]=0; ; enQueue_seq(moveTo, 0x00); route[0]=0; while( !isEmptyQueue_seq(moveTo) && (route[15] == -1)) { location=frontQueue_seq(moveTo); deQueue_seq(moveTo) ; for(movers=1; movers<=8; movers<<=1) if((0!=(location & 0x08)) ==(0!=(location&movers))) {newLocation=Location^(0x08|movers) ; if(safe(newLocation)&&(route[newLocation]==-1)) { route[newLocation]=location; enQueue_seq(moveTo,newlocaton); }//endif }//endif endfor }//endwhile; if(route[15] != -1) { printf(“The reverse path is:\n”); for(location=15; location >=0; location=route[locatoin]) { printf(“The locaton is :%d\n”, location); if(location==0) exit(0); } } else printf(“No solution.\n”); };基于栈的深度优先搜索

文档评论(0)

朋友你好 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档