枚举与递归.pptVIP

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

什么是枚举 称硬币 问题描述 问题描述 3、解题思路 3、解题思路 4、参考程序 4、参考程序 4、参考程序 4、参考程序 熄灯问题 问题描述 问题描述 问题描述 问题描述 3、解题思路 3、解题思路 3、解题思路 3、解题思路 4、参考程序 4、参考程序 4、参考程序 讨厌的青蛙 问题描述 问题描述 问题描述 问题描述 问题描述 3、解题思路 3、解题思路 3、解题思路 3、解题思路 4、参考程序 4、参考程序 4、参考程序 4、参考程序 4、参考程序 递归的基本思想 递归的基本思想 放苹果 问题描述 3、解题思路 3、解题思路 4、参考程序 马的走法 2、问题分析 3、参考代码 3、参考代码 课外练习 课程成绩考核评定标准 一、成绩构成 1、平时成绩:50% 2、期末论文:50% 二、平时成绩构成: (禁止代码拷贝) 1、参与校赛与上机实践:30%(授课结束后安排上机) 2、平时OJ练题:10% 3、平时出勤:10% 三、期末论文类型及要求 稍后给出论文格式要求 需选择某一专题的深入研究 如:线段树、树状数组,网络流等,可以自己任意选择,题目范围涉及各个算法方面。 要求:要有该题目理论描述,自己完成的实际题目,并对题目给出解题分析和实现代码(需加注释),选题要有新意,有一定难度。 Xi=X0 + i×dx、Yi=Y1 + i×dy(i3),如果(Xi,Yi)位于稻田之内,则(Xi,Yi)上的水稻必被青蛙踩踏 根据上述规则,只要知道一条青蛙路径上的前两棵被踩踏的水稻,就可以找到该路径上其他的水稻。为了找到全部的青蛙路径,只要从被踩踏的水稻中,任取两棵水稻(X1,Y1)、(X2,Y2),判断(X1,Y1)、(X2,Y2)是否能够作为一条青蛙路径上最先被踩踏的两颗水稻。 解决方案 这个问题的描述中,最基本的元素是被踩踏的水稻。在程序中要选择一个合适的数据结构,来表达这个基本元素。这个数据结构是否合适的标准是:在程序中要表达这个元素时,能否用一个单词或者短语,即用一个变量来表示。 struct PLANT //描述一棵被踩踏的水稻 { int x; //水稻的行号 int y; //水稻的列号 } 这个问题的主要计算是:从被踩踏的水稻中选择两棵(X1,Y1)、(X2,Y2)。判断它们是否能够作为一条青蛙路径上最先被踩踏的两颗水稻。(X1,Y1)、(X2,Y2)唯一确定了蛙跳的方向和步长,从(X2,Y2)开始,沿着这个方向和步长在稻田内走。每走一步,判断所到达位置上(X,Y)的水稻是否被踩踏,直到走出稻田为止。如果在某一步上,(X,Y)没有被踩踏,则表明(X1,Y1)、(X2,Y2)是一条青蛙路径上最先被踩踏的两颗水稻的假设不成立。这个判断的算法在问题求解过程中要反复使用,它的效率成为决定整个计算效率的关键。 用一个PLANT 型的数组plants[5001]表示全部被踩踏的水稻 将plants 中的元素按照行/列序号的升序(或者降序)排列 采用二分法查找plants 中是否有值为(X,Y)的元素:将(X,Y)与plants 中间的元素比较,(1)相等,表明找到了元素;(2)比plants 中间元素的小,继续在plants 的前半部寻找;(3)比plants 中间元素的大,继续在plants 的后半部寻找。 采用上述方法判断每走一步所到达位置上(X,Y)的水稻是否被踩踏,最多只要比较log2N,其中N 是稻田中被踩踏水稻的总量。 #include stdio.h #include stdlib.h int r,c,n; struct PLANT { int x,y; }; PLANT plants[5001]; PLANT plant; int myCompare(const void *ele1,const void *ele2); int searchPath(PLANT secPlant, int dX, int dY); int main(void) { int i,j,dX,dY,pX,pY,steps,max=2; scanf(%d%d,r,c); scanf(%d,n); for(i=0;in;i++) scanf(%d %d,plants[i].x,plants[i].y); qsort(plants,n,sizeof(PLANT),myCompare); //先竖向排列,再横向排列 for(i=0;in-2;i++) for(j=i+1;jn-1;j++) { dX=plants[j].x-plants[i].x; d

文档评论(0)

sheppha + 关注
实名认证
文档贡献者

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

版权声明书
用户编号:5134022301000003

1亿VIP精品文档

相关文档