网站大量收购独家精品文档,联系QQ:2885784924

第3章 递推算法(C++版).pptVIP

第3章 递推算法(C++版).ppt

此“教育”领域文档为创作者个人分享资料,不作为权威性指导和指引,仅供参考
  1. 1、本文档共39页,可阅读全部内容。
  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文档。上传文档
查看更多

第三章递推算法【例4】昆虫繁殖【问题描述】科学家在热带森林中发现了一种特殊的昆虫,这种昆虫的繁殖能力很强。每对成虫过x个月产y对卵,每对卵要过两个月长成成虫。假设每个成虫不死,第一个月只有一对成虫,且卵长成成虫后的第一个月不产卵(过X个月产卵),问过Z个月以后,共有成虫多少对?0=X=20,1=Y=20,X=Z=50【输入格式】x,y,z的数值【输出格式】过Z个月以后,共有成虫对数【输入样例】128【输出样例】37【参考程序】#includeiostreamusingnamespacestd;intmain(){longlonga[101]={0},b[101]={0},i,j,x,y,z;cinxyz;for(i=1;i=x;i++){a[i]=1;b[i]=0;}for(i=x+1;i=z+1;i++)//因为要统计到第z个月后,所以要for到z+1{b[i]=y*a[i-x];a[i]=a[i-1]+b[i-2];}couta[z+1]endl;return0;}【例5】位数问题【问题描述】在所有的N位数中,有多少个数中有偶数个数字3?由于结果可能很大,你只需要输出这个答案对12345取余的值。【输入格式】读入一个数N【输出格式】输出有多少个数中有偶数个数字3。【输入样例】2【输出样例】73【数据规模】1=N=1000【样例说明】在所有的2位数字,包含0个3的数有72个,包含2个3的数有1个,共73个【算法分析】方法一:排列组合(但需要运用动态规划)。可以列出公式,在n个格子中放x个3(其中x为偶数,包括0).。c(n,x)*9^(n-x)-c(n-1,x)*9^(n-x-1)含义为在n个格子中取x个3,且不考虑第一位的特殊情况为c(n,x)*9^(n-x)。而第一位为0的情况,为c(n-1,x)*9^(n-x-1),两者减下,就为答案。方法二:递推考虑这种题目,一般来说都是从第i-1位推导第i位,且当前位是取偶数还是取奇数的。恍然大悟.可以用f[i][0]表示前i位取偶数个3有几种情况,f[i][1]表示前i位取奇数个3有几种情况。则状态转移方程可以表示为:f[i][0]=f[i-1][0]*9+f[i-1][1];f[i][1]=f[i-1][0]+f[i-1][1]*9;边界条件:f[1][1]=1;f[1][0]=9;【参考程序】#includeiostreamusingnamespacestd;intmain(){intf[1001][2],n,i,x;cinn;f[1][1]=1;f[1][0]=9;for(i=2;i=n;i++){x=f[1][0];if(i==n)x--;f[i][0]=(f[i-1][0]*x+f[i-1][1])%12345;f[i][1]=(f[i-1][1]*x+f[i-1][0])%12345;}coutf[n][0];return0;}【例6】过河卒(Noip2002)【问题描述】棋盘上A点有一个过河卒,需要走到目标B点。卒行走的规则:可以向下、或者向右。同时在棋盘上的任一点有一个对方的马(如C点),该马所在的点和所有跳跃一步可达的点称为对方马的控制点,如图3-1中的C点和P1,……,P8,卒不能通过对方马的控制点。棋盘用坐标表示,A点(0,0)、B点(n,m)(n,m为不超过20的整数),同样马的位置坐标是需要给出的,C≠A且C≠B。现在要求你计算出卒从A点能够到达B点的路径的条数。【算法分析】跳马是一道老得不能再老的题目,我想每位编程初学者都学过,可能是在学回溯或有哪些信誉好的足球投注网站等算法的时候,很多书上也有类似的题目,一些比赛中也出现过这一问题的变形(如NOIP1997初中组的第三题)。有些同学一看到这条题目就去有哪些信誉好的足球投注网站,即使你编程调试全通过了,运行时你也会发现:当n,m=15就会超时。其实,本题稍加分析就能发现,要到达棋盘上的一个点,只能从左边过来(我们称之为左点)或是从上面过来(我们称之为上点),所以根据加法原理,到达某一点的路

文档评论(0)

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

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

1亿VIP精品文档

相关文档