(LeetCode-动态规划-1) 动态规划

news/2024/2/29 4:28:03

爬楼梯

你正在爬楼梯。需要 n 步你才能到达顶部。每次你可以爬 1 或 2 个台阶。你有多少种不同的方式可以爬到楼顶呢?给定 n 将是一个正整数。
示例 1:输入: 2
输出: 2
说明: 有两种方法可以爬到顶端。1.  1 步 + 1 步
2.  2 步示例 2:输入: 3
输出: 3
说明: 有三种方法可以爬到顶端。1.  1 步 + 1 步 + 1 步
2.  1 步 + 2 步
3.  2 步 + 1 步
分析:
n=1时;步数step=1
n=2时;步数step=2
n=3时;步数step=3
n=4时;步数step=5
...
f(n)=f(n-1)+f(n-2)
vector<int> save;
int climbStairs(int n) {if(n==1)return 1;if(n==2)return 2;if(save.size()>(n-2))return save[n-3];save.push_back(climbStairs(n-1)+climbStairs(n-2));return save.back();
}

最大子序和

给定一个序列(至少含有 1 个数),从该序列中寻找一个连续的子序列,使得子序列的和最大。
例如,给定序列 [-2,1,-3,4,-1,2,1,-5,4],
连续子序列 [4,-1,2,1] 的和最大,为 6。
分析:
nums:[-2,1,-3,4,-1,2,1,-5,4]
tmp:[-2,1,-2,4,3,5,6,1,5]tmp[0]=nums[0]
tmp[1]=max(nums[1],tmp[0]+nums[1])
tmp[2]=max(nums[2],tmp[1]+nums[2])
...
tmp[n]=max(nums[n],tmp[n-1]+nums[n])
int maxSubArray(vector<int>& nums) {vector<int> tmp;tmp.push_back(nums[0]);for(int i=1;i<nums.size();i++)tmp.push_back(max(nums[i],tmp[i-1]+nums[i]));sort(tmp.begin(),tmp.end());return tmp.back();
}

打家劫舍

你是一个专业的强盗,计划抢劫沿街的房屋。每间房都藏有一定的现金,阻止你抢劫他们的唯一的制约因素就是相邻的房屋有保安系统连接,如果两间相邻的房屋在同一晚上被闯入,它会自动联系警方。给定一个代表每个房屋的金额的非负整数列表,确定你可以在没有提醒警方的情况下抢劫的最高金额。
分析:
nums:[2,1,2,4,3]
tmp:[2,2,4,6,7]tmp[0]=nums[0];
tmp[1]=max(nums[0],nums[1])
tmp[2]=max(nums[2]+tmp[0],tmp[1])
...
tmp[n]=max(nums[n]+tmp[n-2],tmp[n-1])
int rob(vector<int>& nums) {if(!nums.size())return 0;if(nums.size()==1)return nums[0];vector<int> tmp;tmp.push_back(nums[0]);tmp.push_back(max(nums[0],nums[1]));for(int i=2;i<nums.size();i++)tmp.push_back(max(nums[i]+tmp[i-2],tmp[i-1]));return tmp.back();
}

https://www.jiucaihua.cn/news/show-2159286.html

相关文章

50天从三层级到六层级,“我也曾挣扎在生存边缘”

在淘宝做女装店掌柜&#xff0c;韩少祥还算是半个“新人”&#xff0c;但在服装领域&#xff0c;实际上他已闯荡了十多年&#xff0c;从设计到生产&#xff0c;是个实打实的行家。 梦开始的地方 深圳&#xff0c;是韩少祥梦开始的地方。2007年&#xff0c;韩少祥开了第一家女装…

Neural networks representation 习题

answer: Its stay the same. (结果不变) 原因&#xff1a;交换parameters matrix 1的两行使得其与matrix a1运算得到matrix a2时交换了 a2中的第一个元素和第二个元素&#xff0c;即a2 subscript1 and a2 subscipt2。 正好与其对应相乘的parameters matrix 2中的参数1和2交换…

容器开启数据服务之旅系列(一):Kubernetes如何解自建PostgreSQL运维之痛

容器开启数据服务之旅系列&#xff08;一&#xff09;&#xff1a;Kubernetes如何解自建PostgreSQL运维之痛 概述 本文为大家介绍一种容器化的数据服务 posgresql db on ACK&#xff0c;通过使用云盘自动挂载实现的块存储PVC来做到数据库的免运维恢复。借助阿里云Kubernetes服务…

201421410040 张运焘 Armitage

实验简介 实验所属系列&#xff1a; 安全工具使用实验对象&#xff1a;本科/专科信息安全专业相关课程及专业&#xff1a; linux基础、网络安全实验类别&#xff1a; 实践实验类预备知识 Armitage基本介绍 Armitage是一款Java写的Metasploit图形界面化的攻击软件&#xff0c;可…

滴答定时器

滴答定时器,是一个倒计时定时器:重点是前三个寄存器 转载于:https://www.cnblogs.com/chulin/p/8330452.html

将对象转化为数组,并且适用select下拉

当你做element-ui的select下拉的时候数据是从后台请求,但是怎么才能将obj转成数组呢.并且后台返回的key和value中的key是要传的参数 var obj {name: gaby,gender: male}var array []for (var key in obj) {array.push({value: key,label: obj[key]})}console.log(array, 222)…

共享健身仓,4平方米内挥汗如雨

2019独角兽企业重金招聘Python工程师标准>>> 数字、信息、互联网、大数据时代发展至今&#xff0c;“共享”产业的各种产品在不长的时间中已是星罗棋布。共享单车、共享KTV、共享睡眠舱、共享雨伞&#xff0c;其中有的被证明是生活出行的便利法宝&#xff0c;有的伴…

linux-用户管理中命令的使用

Linux 是一个多用户多任务的操作系统&#xff0c;用户管理成了Linux的一部分。对用户的管理和权限管理&#xff0c;是为了更好的调配Linux的资源&#xff0c;以及更安全的操作Linux系统。1&#xff1a;认识比较重要的几个用户管理文件&#xff0c;/etc/passwd,/etc/shadow,/etc…

20165306 2017-2018-2《Java程序设计》课程总结

课程总结 每周作业链接汇总&#xff1a;预备作业一&#xff1a;我期望的师生关系 预备作业二&#xff1a;学习基础和C语言基础调查 预备作业三&#xff1a;Linux安装与学习 第一周作业&#xff1a;Java入门 第二周作业&#xff1a;基本数据类型与数组&#xff0c;运算符、表达式…

elasticsearch 的安全配置

为什么80%的码农都做不了架构师&#xff1f;>>> 在 config/elasticsearch.yml 中为9200端口设置认证&#xff1a; http.basic.enabled true #开关&#xff0c;开启会接管全部HTTP连接 http.basic.user "admin" #账号 http.basic.passwor…