爬楼梯——递推法(一维、多维、图)
一、一维递推
有一个n层的楼梯,每次只能上一层或上两层,那么爬到n层有多少种方法?
分析:类比于递归,现层到达为下面一层和下面两层的和。
故递推关系式为F(n)=F(n-1)+F(n-2)
即代码表达为
/**低空间**/
int a=1,b=2,c;
for(i--n)//n为次数
{c=a+b;a=b;b=c;
}/**常用**/
int f[3];//此题为3,3个变量
f[0]=1,f[1]=2;
for (i=2--n)f[i%3]=f[(i-1)%3]+f[(i-2)%3];
//利用的是数组滚动,DP方法中常见
二、多维递归
小明走路,仅能 向上、向下、向前走,并且走过后不能再走,则小明走n步有多少种走法?
分析:从点考虑,小明在n处的选择取决于n-1处的选择,
从面考虑,设小明的第n次选择为小明所走路径数的层数,
按照数节点的计算,n+1的节点数为 n的选择路的子路总和
F(m)=f[0]+f[1]+f[2] //其中f函数为上一次的选择数
现在利用二维函数进行优化
/**二维数组模拟**/
int ans[100][3]={0};
ans[0][1]=ans[0][1]=ans[0][2]=1;
for (i=1--n)
{ans[i][0]=ans[i-1][0]+ans[i-1][2];//想在n向上 则n-1必不能向下 即ans[i-1][1]=0ans[i][1]=ans[i-1][1]+ans[i-1][2];//同上 ans[i-1][0]=0ans[i][2]=ans[i-1][0]+ans[i-1][1]+ans[i-1][2];
}
cout<<ans[i-1][0]+ans[i-1][1]+ans[i-1][2]<<endl;/**一维递推**/
int ans[3];//此题为3个变量
ans[0]=ans[1]=1;
for (i=2--n)ans[i%3]=2*ans[(i-1)%3]+ans[(i-2)%3];
//等式推导
三、图递推
在XY数轴中,到达(x,y)有多少种方法?
分析:利用爬楼梯思路
F(x,y)=F(x-1)(y)+F(x)(y-1)
int F[100][100]={0};
F[0][0]=1;
for ()
{for (){if (i未越界)F[i][j]+=F[i-1][j];if (j未越界)F[i][j]+=F[i][j-1];}
}
数学思路:从总路程中选择向前走的数量
F(x,y)=C(x-1,x+y-2)
爬楼梯——递推法(一维、多维、图)相关推荐
- 递推(一):递推法的基本思想
所谓递推,是指从已知的初始条件出发,依据某种递推关系,逐次推出所要求的各中间结果及最后结果.其中初始条件或是问题本身已经给定,或是通过对问题的分析与化简后确定. 利用递推算法求问题规模为n的解的基本思 ...
- 记忆化搜素,和递推法
记忆化搜素是动态规划的改进,------自上而下,就是在递归重叠子问题时候,对子问题的重复问题的对策,就是一开始对所有子问题进行赋值(一般为-1)这样的标记方法来区分是否被查找过. 递推----也是动 ...
- 随机数字信号处理实验报告三——Levinson和Burg递推法MATLAB实现
完整的实验报告下载连接https://download.csdn.net/download/LIsaWinLee/14884452 一.实验原理 随机信号的功率谱密度用来描述信号的能量特征随频率的变化 ...
- 递推法 c语言,递推法
递推算法 给定一个数的序列H0,H1,-,Hn,-若存在整数n0,使当n>n0时,可以用等号(或大于号.小于号)将Hn与其前面的某些项Hi(0 递推算法是一种简单的算法,即通过已知条件,利用特定 ...
- 常见算法思想2:递推法
递推法 递推算法犹如稳重的有经验的老将,使用"稳扎稳打"的策略,不断利用已有的信息推导出新的东西. 在日常应用中有如下两种递推算法: (1)顺推法:从已知条件出发,逐步推算出要解决 ...
- 随机信号处理AR模型Yule_Walker方程直接解法和Levinson_Durbin递推法的MATLAB与Python实现
AR模型 AR模型的系统函数H(z)可以表示为: 我们的目的就是要求解系统函数的参数a和增益G. Yule_Walker方程 矩阵形式 根据生成的矩阵,可以解出p个参数 ,再根据自相关函数,可以求出系 ...
- 【递推法】错排问题的递推式和推导过程
[递推法]错排问题的递推式和推导过程 前言:这篇博客是帮助没有见过错排的新人更好的理解错排问题的递推式和推导过程,各位大佬可自行跳过 题目链接:洛谷P1595信封 一.错排问题的定义: 很多人 ...
- 错位排列问题(递推法)
问题描述 有n个信封和n个信件,第ii个信件属于第i个信封,我们想知道,有多少种不同的方法,使得没有任何一个信件被装入正确的信封中? 思路 采用递推法. 假设当信和信封的个数为n时,错位排列的个数记为 ...
- 算法笔记方法论3 递推法与递归法
你站在桥上看风景看风景的人在楼上看你明月装饰了你的窗子你装饰了别人的梦--卞之琳 递推算法的特点 一个问题的求解需要大量重复计算,在已知的条件和所求问题之间总存在着某种相互联系的关系,在计算时,我们需 ...
最新文章
- 千万别中招!手把手教你复现Log4j2漏洞!
- java 斗地主桌号_求用java编写的斗地主程序就,要求可以在局域网内实现两桌以上同时玩。...
- spring连数据库的配置文件(applicationContext.xml)
- 【WebPPTtoPDF】在线将PPT转化为PDF,支持自定义排列方式
- 阿里Java编程规约(注释)提炼
- Azure运维系列 4:安装和使用Azure PowerShell管理云
- Bug,昂首走进2005
- 上海计算机一级flash真题,2011年上海市一级考PS与Flash试卷.docx
- 绘图的尺寸_【科研绘图1】你离顶级期刊封面仅差一步
- Second kill system learning
- abb变频器dp适配器说明书_ABB变频器ACS510_CN使用说明书.pdf
- 基于MI的cfc(交叉频率耦合)分析
- python getopt使用_Python命令行参数解析模块getopt使用实例
- 小米手机扩容教程_小米4 16g升级64g教程:小米4 16g扩张64g步骤
- 最优化方法(学习笔记)-第七章统计估计
- 3分钟快速阅读-《Effective Java》(三)
- 证明残差的平均值等于0,残差以x加权的平均值为0
- java虚拟机的内存管理
- 去掉cajview阅读器右上角的图标方法
- 关于 js bin 的运用
热门文章
- 美国诚实签经验——户口本!!!
- 粗糙集在计算机网络中的应用,粗糙集理论在入侵检测系统中的应用研究软件工程专业论文.docx...
- ZOJ3635 Cinema in Akiba(线段树)
- 2020社招阿里、腾讯、蚂蚁金服「四面」Java面试真题分享
- pyinstall 打包python3.7.1的exe反编译
- 大疆无人机 MobileSDK(遥控器/手机端)开发 v4版<1>
- 使用Java多线程实现任务分发
- 服务器远程安装Matlab2015
- 《计算机网络常见问题》
- Javascript中关于Array.filter()的妙用详解