递推求解new课件.ppt_第1页
递推求解new课件.ppt_第2页
递推求解new课件.ppt_第3页
递推求解new课件.ppt_第4页
递推求解new课件.ppt_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2019/6/27,1,ACM 程序设计,计算机学院 刘春英,2019/6/27,2,今天,,你 了吗?,AC,2019/6/27,3,每周一星(2):,06057231杨振华,2019/6/27,4,第三讲 递 推 求 解,2019/6/27,5,先来看一个超级简单的例题:,有5人坐在一起,当问第5个人多少岁,他说比第4个人大2岁,问第4个人多少岁,他说比第3个人大2岁,依此下去,问第一个人多少岁,他说他10岁,最后求第5个人多少岁?,如果所坐的不是5人而是n人,写出第n个人的年龄表达式。,2019/6/27,6,显然可以得到如下公式:,化简后的公式: F(n)=10+(n-1)*2,2019/6/27,7,再来一个简单题:,2019/6/27,8,再来一个简单题:,蟠桃记,2019/6/27,9,递推公式?,F(n)=(F(n-1)+1)*2,2019/6/27,10,Fibnacci 数列:,即:1、2、3、5、8、13、21、34,2019/6/27,11,思考:,递推公式的伟大意义?,有了公式,人工计算的方法?,常见的编程实现方法?(优缺点?),2019/6/27,12,简单思考题:,在一个平面上有一个圆和n条直线,这些直线中每一条在圆内同其他直线相交,假设没有3条直线相交于一点,试问这些直线将圆分成多少区域。,2019/6/27,13,是不是这个,F(1)=2; F(n) = F(n-1)+n;,化简后: F(n) = n(n+1)/2 +1;,2019/6/27,14,太简单了?,来个稍微麻烦一些的,2019/6/27,15,例: (2050)折线分割平面,问题描述: 平面上有n条折线,问这些折线最多能将平面分割成多少块? 样例输入 1 2 样例输出 2 7,2019/6/27,16,思考2分钟:如何解决?,2019/6/27,17,结论:,Zn = 2n ( 2n + 1 ) / 2 + 1 - 2n = 2 n2 n + 1,为什么?,2019/6/27,18,趁热打铁,,来个差不多的,2019/6/27,19,说起佐罗,大家首先想到的除了他脸上的面具,恐怕还有他每次刻下的“Z”字。我们知道,一个“Z”可以把平面分为2部分,两个“Z”可以把平面分为12部分,那么,现在的问题是:如果平面上有n个“Z”,平面最多可以分割为几部分呢? 说明1:“Z”的两端应看成射线 说明2:“Z”的两条射线规定为平行的,附加思考题(还没加到OJ): “佐罗”的烦恼,2019/6/27,20,总结:递推求解的基本方法:,首先确认,是否能很容易的得到简单情况的解,假设规模为N-1的情况已经得到解决,重点分析:当规模扩大到N时,如何枚举出所有的情况,并且要确保对于每一种子情况都能用已经得到的数据解决。,强调: 1、编程中的空间换时间的思想 2、并不一定是从N-1到N的分析,2019/6/27,21,问题的提出: 设有n条封闭曲线画在平面上,而任何两条封闭曲线恰好相交于两点,且任何三条封闭曲线不相交于同一点,问这些封闭曲线把平面分割成的区域个数。,思考题:平面分割方法,2019/6/27,22,F(1)=2 F(n)=F(n-1)+2(n-1),2019/6/27,23,某人写了n封信和n个信封,如果所有的信都装错了信封。求所有的信都装错信封,共有多少种不同情况。,1465 不容易系列之一,2019/6/27,24,分析思路:,1、当N=1和2时,易得解,假设F(N-1)和F(N-2)已经得到,重点分析下面的情况:,4、后者简单,只能是没装错的那封信和第N封信交换信封,没装错的那封信可以是前面N-1封信中的任意一个,故= F(N-2) * (N-1),3、前者,对于每一种错装,可以从N-1封信中任意取一封和第 N封错装,故=F(N-1) * (N-1),2、当有N封信的时候,前面N-1封信可以有N-1或者 N-2封错装,2019/6/27,25,得到如下递推公式:,基本形式:d1=0; d2=1 递归式:dn= (n-1)*( dn-1 + dn-2),这就是著名的错排公式,2019/6/27,26,在2n的一个长方形方格中,用一个1 2的骨牌铺满方格, 例如n=3时,为2 3方格,骨牌的铺放方案有三种(如图), 输入n ,输出铺放方案的总数,思考题(2046):,2019/6/27,27,有1n的一个长方形,用11、12、13的骨牌铺满方格。例如当n=3时为13的方格,此时用11,12,13的骨牌铺满方格,共有四种铺法。如图,输入 n(0=n=30); 输出 铺法总数,再思考:,2019/6/27,28,仔细分析最后一个格的铺法,发 现无非是用11,12,13三种铺法,很容易就可以得出: f(n)=f(n-1)+f(n-2)+f(n-3); 其中f(1)=1,f(2)=2,f(3)=4,典型例题,最后一个思考题(有点难度):,Childrens Queue,2019/6/27,30,用F(n)表示n个人的合法队列, 作如下分析:,按照最后一个人的性别分析,他要么是男,要么是女,所以可以分两大类讨论: 1、如果n个人的合法队列的最后一个人是男,则对前面n-1个人的队列没有任何限制,他只要站在最后即可,所以,这种情况一共有F(n-1);,2019/6/27,31,2、如果n个人的合法队列的最后一个人是女,则要求队列的第n-1个人务必也是女生,这就是说,限定了最后两个人必须都是女生,这又可以分两种情况: 2.1、如果队列的前n-2个人是合法的队列,则显然后面再加两个女生,也一定是合法的,这种情况有F(n-2); 2.2、但是,难点在于,即使前面n-2个人不是合法的队列,加上两个女生也有可能是合法的,当然,这种长度为n-2的不合法队列,不合法的地方必须是尾巴,就是说,这里说的长度是n-2的不合法串的形式必须是“F(n-4)+男+女”,这种情况一共有F(n-4).,2019/6/27,32,结论:,所以,通过以上的分析,可以得到递推的通项公式: F(n)=F(n-1)+F(n-2)+F(n-4) (n3) 然后就是对n=3 的一些特殊情况的处理了,显然: F(0)=1 (没有人也是合法的,这个可以特殊处理,就像0的阶乘定义为1一样) F(1)=1 F(2)=2 F(3)=4,2019/6/27,33,有排成一行的个方格,用红(Red)、粉(Pink)、绿(Green)三色涂每个格子,每格涂一色,要求任何相邻的方格不能同色,且首尾两格也不同色求全部的满足要求的涂法.,附加思考题: 不容易系列之(3) LELE的RPG难题,2019/6/27,34,一把钥匙有N个槽,2N26槽深为1,2,3,4,5,6。每钥匙至少有3个不同的深度且相连的槽其深度之差不得为5。求这样的钥匙的总数。 本题无输入 对2N26,输出满足要求的钥匙的总数。,附加思考题: 1480_钥匙计数之二,2019/6/27,35,详见解题报告:,/forum/read.php?tid=2294&page=1&toread=1 仔细阅读,耐心品味,关键掌握从n-1到n的推导过程。,2019/6/27,36,Any question?,2019/6/27,37,HDOJ作业:,一、课后在线练习: ACM ProgrammingExercise(3) 二、相关题目: 12

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论