- 1
- 0
- 约2.64千字
- 约 5页
- 2026-03-10 发布于广西
- 举报
PAGE
PAGE1
复杂递推
教学目标
1.知识与技能
了解递推法基本概念
学会用递推法分析处理问题.
2.过程与方法:
学习流程:讲授——模仿——练习
通过课堂练习,巩固课堂内容。
教学重点、难点
【重点】
排列组合原理在递推公式推导中的作用
【难点】
边界的确定
递推式的推导。
课时安排
课时安排:120分钟
四、上课准备
课程相关ppt、白板、白板笔、积分卡
课前检查电脑、投影仪、网络是否有故障,及时修复。
五、教学活动
活动时长
教学活动
注意事项
课前准备
老师准备学生电脑,保证电脑能正常使用;打开投影仪,打开上课课件,以最饱满的热情迎接学生!
提前10分钟准备
开场白
欢迎各位同学回到吉码信息学课堂。
引入
同学们好,今天我们学的是递推.递推是一种非常重要的思维方法,上节课我们讲的是简单递推,这节课我们难度提高一点。
学习内容(1)
ppt5错排问题
所谓错排问题就是错位排列问题的简称。这个问题最初是指:有n个信封和n封信,把所有的信都装错信封有多少种不同的排列情况?最初数学家是研究邮递员送错信的概率而提出了错位排列问题。那么,现在我们可以通过递推的方式来求解错排问题。
这个问题我们通过乘法和加法原理完成。乘法原理对应分步操作,加法原理对应分类操作。具体过程是这样的:
1、给信和信封编号,分别是1号到n号,那么正常情况下1号信就要放在1号信封内。如果是错位排列,那么1号信就不允许放在1号信封内,以此类推。
2、先取出1号信,那么1号信有n-1种放置方案,这是第一步,所以(n-1)要作为答案的一个乘数。
3、假设我们1号信放在了第i号信封内,这时候有两种方案可以选择:
a、i号信放在1号信封内——剩下的进行错位排列f(n-2)种
b、i号信不放在1号信封内——相当于n-1封信错位排列(请同学们思考为什么)f(n-1)种
那么方案总数:f(n)=(n-1)[f(n-2)+f(n-1)]
这就得到了递推式。
【提问】为什么1号信放在i号信封后,i号信不放在1号信封内相当于n-1个元素错位排列?
【答案】因为此时排列情况n-1个元素都有1个不能放置的对象,且这些对象不重合,就和n-1个元素错位排列一样。只不过i号要和1号信封错位,我们把1号信封看成i号信封即可。
【提问】以上的递推式能求解问题了吗?
【答案】不能。还有初始条件还没有推导
【提问】初始条件需要我们人工计算哪些项?
【答案】根据递推表达式n-2=1,所以n=3,我们应该计算第1和第2项。
【提问】谁推导一下初始条件?
【答案】f(1)=0;f(2)=1;
留时间给同学们完成计算错位排列的程序。输入n,输出f(n).
注意:教师一定要先熟悉推导过程,在不播放ppt6、7的前提下引导学生理解推导过程。
ppt9.迷宫和棋盘问题
播放ppt10,让学生自己去理解解决问题的关键。推导出递推公式之后,最重要的是初始条件的推导,以及怎样去进行初始化。
留时间给学生独立完成这个问题,时间控制在20分钟左右。
学习内容(2)
ppt14.放苹果问题
其实放苹果问题和拆分自然数问题本质上是相同的。
把一个自然数拆成k个数的和,其实就是把若干个苹果放在k个盘子里。
但是这里有一个去除重复的问题,例如7个苹果放在三个盘子里,5+1+1和1+1+5是同一种方法。
怎么样避免重复的方法产生?对于7个苹果放在3个盘子里,如果考虑输出方案,我们就必须保证这3个自然数是从小到大排序的,这样就不会产生重复的方案。因为题目只要求输出方案的数量,所以我们不需要考虑具体的方案,只是要考虑递推关系就可以了。
n个苹果放在k个盘子里,允许盘子空,一共分为两种方案:
第1种是有盘子空的方案,第2种是没有盘子空方案。
有盘子空,因为盘子是没有编号的,互相之间不予区分,所以我们拿出一个盘子,让这个盘子空着,只有一种拿法。那么有盘子空的方案数就相当于把n个苹果按照同样的方式放在k-1个盘子里,即f(n,k-1)种方案。
没有盘子空,那么我们首先把所有的盘子都放上一个苹果,还剩n-k个苹果,按照原来的方式继续放苹果即可,即f(n-k,k)种方案。如果n-k0,那么不可能盘子不空,所以有盘子空的方案必须在n=k时才有。
【提问】那么我们怎么写递推关系?
【答案】
f(n,k)=f(n,k-1)当nk
f(n,k)=f(n,k-1)+f(n-k,k)当n≥k
【提问】初始条件怎么计算?
【答案】f(n,k)要由前面的行和前面的列来计算。那么第一行和第一列要初始化才能递推成功。
f(1,k)=1;1个苹果放在k个盘子里,k=1,无论k为多少都只有1种方案,选一个盘子放一个苹果即可。
f(n,1)=1;n个苹果放在1个盘子里,也只有一种方案
您可能关注的文档
- C++编程《第001课 初识C++》教学设计.docx
- C++编程《第001课 初识C++》教学课件.pptx
- C++编程《第002课 变量和数据类型(1)》教学课件.pptx
- C++编程《第002课 变量和数据类型(1)》教学设计.docx
- C++编程《第003课 变量和数据类型(2)》教学设计.docx
- C++编程《第003课 变量和数据类型(2)》教学课件.pptx
- C++编程《第004课 选择与分支(1)》教学课件.pptx
- C++编程《第004课 选择与分支(1)》教学设计.docx
- C++编程《第005课 选择与分支(2)》教学课件.pptx
- C++编程《第005课 选择与分支(2)》教学设计.docx
原创力文档

文档评论(0)