没有合适的资源?快使用搜索试试~ 我知道了~
动态规划dp(常用算法)
资源推荐
资源详情
资源评论
动态规划
故事引入
“曾经跨越诸多世界的我,受困于此”,你是一个从世界之外漂流而来的旅行者,你漫
无目的地在这片大陆上探索着,直到你看到了这座石碑:
动态规划简介
古语有云:“尺有所短,寸有所长”,任何算法和思想都有它的局限性。动态规划
(Dynamic Programming,简称 DP)是一种用来解决一类具有重叠子问题(指的是在
求解问题的过程中,会反复求解同一个子问题,导致算法效率低下)和最优子结构性质
(指的是问题的最优解可以通过子问题的最优解来构造,也就是说每一个状态都可以从前
一个状态转移过来)的问题的算法思想。通常采用自底向上的方式,通过将原问题划分为
若干个子问题(分治算法),并先求解子问题的最优解,然后逐步将子问题的解组合起
来,直到求解原问题的最优解。
动态规划问题的解决步骤如下所示:
1.定义状态:定义子问题的解以及问题的解。通常采用状态表示问题的某些属性或特征。
2.确定状态转移方程:确定从一个状态转移到另一个状态的具体方式。
3.初始状态(初始化):定义最小子问题的解或问题的初始解。
4.计算顺序:根据状态转移方程自底向上计算问题的解。
5.解释解:根据计算得到的解释解决方案。
动态规划之初探
递推
你开始理解石碑上的文字,并好像发现了什么。
走着走着,你登上了几阶楼梯,忽然,你突发奇想:我可以一步跨一级台阶,也可以两
级台阶,那么我有多少种上楼梯的方法呢?
你接受了这个挑战:
题目描述
一段楼梯有 n 级台阶。你每次可以走一级或者走两级。请问走完共有几种方案?
输入格式
输入 n(n≤40)。
输出格式
输出方案数量。
样例
Input 1
5
Output 1
8
你开始在有限的时间里思考,怎么解决这个问题呢?你开始在楼梯上徘徊,试图走出不
同的可能性。但是你很快发现这种方法实在是太慢了。忽然,你发现了一件事:跨上第 1
级台阶的方案数始终只有一种,第 2 级有 2 种,一种是直接跨大步,一种是两个小步,但
是第 3 级台阶就等于它们 2 个的方案数之和!你开始验证你的猜想是否正确,第 4 级=第 2
级+第 3 级,第 5 级=第 3 级+第 4 级······那么设台阶数为 n,那么当 n>2 的时候
总的方法数就等于 n-1 的方法数加上 n-2 的方法数!用一个数组来表示就是 f[n]=f[n-
1]+f[n-2]。“破绽,稍纵即逝”,你使用出了这一招:
1. #include<bits/stdc++.h>
2. using namespace std;
3. int n,a[50];
4. int main(){
5. a[1]=1,a[2]=2;
6. cin>>n;
7. for(int i=3;i<=n;i++){
8. a[i]=a[i-1]+a[i-2];
9. }
10. cout<<a[n];
11. }
你成功的完成了这一个挑战并获取了 100 帕特森(pts,这个世界中的通行货币),你
的脑海里回荡着这么一个声音:递推——你开始与石碑上的字联想:它们是一类东西吧!
动态规划之线性动态规划
你走在路上,回想着石碑上的字,由于你想的太入神,你走入了一个潮湿而又黑暗的洞
穴,直到你发现光线的的变化时,门已经被关上了,只有解出谜题才能顺利逃脱,不然,你
会饿死在这。
没办法,你只能继续往里走,你看到了一则紫色的铭文:
最长上升子序列(LIS)
时间:0.2s 空间:32M
题目描述:
对于一个数的序列 bi,当 b1<b2<...<bS 的时候,我们称这个序列是上升的。
对于给定的一个序列(a1,a2,...,an),我们可以找到一些上升的子序列(ai1,ai2,...,aiK),这
里 1 <= i1 < i2 < ... < iK <= N。比如,对于序列(1, 7, 3, 5, 9, 4, 8),有它的一些上升
子序列,如(1, 7), (3, 4, 8)等等。这些子序列中最长的长度是 4,比如子序列(1, 3, 5, 8).
你的任务,就是对于给定的序列,求出最长上升子序列的长度。
输入格式:
第一行输入一个整数 n
第二行输入 n 个整数
输出格式:
输出一个整数,表示最长递增子序列的长度
样例输入:
7
1 7 3 5 9 4 8
样例输出:
4
约定:
1<=n<=1000,1<=序列元素<=10000
剩余17页未读,继续阅读
资源评论
TangyixiaoQAQ
- 粉丝: 24
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于MIC+NE555光敏电阻的声光控电路Multisim仿真原理图
- python tkinter-08-盒子模型.ev4.rar
- Doozy UI Manager 2023
- 基于matlab实现夜间车牌识别程序(1).rar
- 基于matlab实现无线传感器网络无需测距定位算法matlab源代码 包括apit,dv-hop,amorphous在内的共7个
- 基于python的yolov5实现的旋转目标检测
- 基于matlab实现无线传感器网络 CAB定位仿真程序 这是无线传感器节点定位CAB算法的仿真程序,由matlab完成.rar
- 基于matlab实现图像处理,本程序使用背景差分法对来往车辆进行检测和跟踪.rar
- 基于matlab实现视频监控中车型识别代码,自己写的,希望和大家多多交流.rar
- springcodespringcodespringcodespringcode
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功