LeetCode House Robber 家庭劫犯(dp)

 

题意:有一个整数序列,从中挑出一些数字,使得总和是最大,前提是,相邻的两个数字中只能挑其一。比如1 2 3 就只能挑2或者1和3。

思路:很直观的题,dp思想。降低规模,从小规模开始考虑。如果只有两个数字,那么结果很明显就能知道是其中之大者。假如已经知道了第 i 个之前的决策,那么第i+2个之前的决策也就知道了。前两个数字已经由人工得知,设为dp[0]和dp[1],那么dp[2]=max(dp[0]+nums[2], dp[1])。状态转移方程dp[i]=max(dp[i-1], dp[i-2]+num[i] )。

这里有状态压缩的思想,只不过状态只有两个,0和1代表前一个数字是否被挑出。即dp数组的下标,1代表i-1个之前的决策结果,也代表了第i-1个已经挑出,所以第i个不能再挑出来了;但是0代表i-2个之前的决策结果,也代表了i-1个不挑出。

 

 1 class Solution {
 2 public:
 3     int rob(vector<int>& nums) {
 4         if(nums.empty())    return 0;
 5         if(nums.size()==1)    return nums[0];
 6         if(nums.size()==2)    return max(nums[1],nums[0]);
 7         
 8         int dp[2];
 9         dp[0]=nums[0];    //初始化也是很重要的
10         dp[1]=max(nums[0],nums[1]);
11     
12         for(int i=2; i<nums.size(); i++)
13         {
14             int tmp=max(dp[1],dp[0]+nums[i]);
15             dp[0]=dp[1];//往前移。因为dp[0]已经没作用了
16             dp[1]=tmp;
17         }
18         return dp[1];
19     }
20 };
AC代码

 

转载于:https://www.cnblogs.com/xcw0754/p/4498047.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/419926.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

matlab画线不同颜色_怎样画线框图才有意义?

本文由 Jonathan 译自 https://medium.muz.li/how-to-succeed-in-wireframe-design-2ab3cd5c4bc9我们常轻忽身边习以为常的事物&#xff0c;觉得没有必要为一些看似简单又可有可无的东西浪费时间——例如线框图。虽然没必要凡事都寻根问底&#xff0c;但当面对复杂问题时&#…

计算机应用基础第五章在线测试答案,计算机应用基础在线测试第五章答案

参考答案如下计算机【单选题】休克Ⅰ期机体出现的代偿反应 不正确 的是用基语义之间的组合关系是指词之间的______。在没有光的时候&#xff0c;线测我们看不到任何物品的色彩。【多选题】在一幅好的风景作品中&#xff0c;试第即使是平面的&#xff0c;我们也感觉的到远近的感…

testNG之组测试

Test(groups {""}) 在执行测试用例的时候&#xff0c;往往一个功能依赖多个测试用例&#xff0c;比如流程的测试&#xff0c;那么这个时候就可以用到组测试&#xff0c;把流程涉及到测试用例都分到同一组里&#xff0c;按组执行即可。 testNG的组通过Test的groups属…

html按钮不可选中,如何使HTML文本不可选择

小编典典用普通的HTML无法做到这一点&#xff0c;因此JSF在这里也无法为您做很多事情。如果您仅针对体面的浏览器&#xff0c;则只需使用CSS3&#xff1a;.unselectable {-webkit-touch-callout: none;-webkit-user-select: none;-khtml-user-select: none;-moz-user-select: n…

小米手机扩容教程_小米笔记本硬盘扩容教程:5分钟搞定,存储容量瞬间翻倍...

想要了解更多热门资讯、玩机技巧、数码评测、科普深扒&#xff0c;可以点击右上角关注我们的百家号&#xff1a;雷科技----------------------------------现在&#xff0c;固态硬盘在笔记本上基本上已经普及了&#xff0c;相比机械硬盘&#xff0c;它的优势很明显&#xff0c;…

[转]你所不知道的超级瘦腿运动——空中蹬自行车

转自&#xff1a;http://weibo.com/p/1001603808616690912493?frompage_100505_profile&wvr6&modwenzhangmod 看似平淡无奇&#xff0c;实则大有文章。普通的蹬法1000个也没用&#xff0c;海龟版本的蹬法每天30个就可以修炼出绝世美腿、平坦小腹、并且有效改善X、O型腿…

计算机快捷键知识点,电脑常用快捷键基础的知识点(12页)-原创力文档

电脑常用快捷键基础知识按” shift ”&#xff0b;”6” 是省略号……&#xff0c;方法&#xff1a; shift6 (主键盘上的 6&#xff0c;就是 Y 键对上去的那个 6), 前提是在你有五笔输入法的状态栏上 , 必须是中文标点 , 就是有个软件盘的旁边那个标点符号必须是空心的 .)另一个…

pandas用均值填充nan_python – 如何用pandas中的滚动平均值填充nan值

这应该工作&#xff1a;input_data_frame[var_list] input_data_frame[var_list].fillna(pd.rolling_mean(input_data_frame[var_list], 6, min_periods1))请注意,窗口为6,因为它包含NaN本身的值(不计入平均值).此外,其他NaN值不用于平均值,因此如果在窗口中找到的值少于5个,则…

Java 默认/缺省 内存大小,如果没有 -Xms -Xmx

命令 java -XX:PrintCommandLineFlags -version 会直观的输出下面默认值 -XX:InitialHeapSize16336768 -XX:MaxHeapSize522776576 -XX:PrintCommandLineFlags 转载于:https://www.cnblogs.com/tang88seng/p/4498866.html

html菜鸟ruby,Ruby 循环

Ruby 循环Ruby 中的循环用于执行相同的代码块若干次。本章节将详细介绍 Ruby 支持的所有循环语句。Ruby while 语句语法whileconditional[do]codeend或者语法whileconditional[:]codeend当 conditional 为真时&#xff0c;执行 code。语法中 do 或 : 可以省略不写。但若要在一行…

jenkins是什么_使用 Jenkins 自动发布服务到 Kubernetes

使用 Jenkins 自动发布服务到 KubernetesJenkins 是什么一个比较流行的开源 CI/CD 工具CI/CD : 持续集成/持续部署Kubernetes 是什么容器化工具 -- 一个开源的&#xff0c;用于管理云平台中多个主机上的容器化的应用&#xff0c;Kubernetes的目标是让部署容器化的应用简单并且高…

2015.5.12站立会议

昨天我们将查阅的资料汇总&#xff0c;并进行了了解和分析&#xff0c;每个人都发表了自己在查阅资料过程中的认识和对这部分的理解&#xff0c;大家交换了意见。 今天我们准备将所了解的内容代码化&#xff0c;每人编写一部分代码&#xff0c;利用所查找的资料。 遇到的问题&a…

grav html5,如何通过html5实现摇一摇的功能

原理&#xff1a;使用DeviceMotion实现&#xff0c;关于DeviceMotion介绍可以查看https://developer.mozilla.org/en-US/docs/Web/Reference/Events/devicemotion通过DeviceMotionEvent&#xff0c;可以获得accelerationIncludingGravity的x,y,z属性&#xff0c;根据x,y,z属性的…

WPF DataGrid

前台代码 <DataGrid Name"gv_GetWork" AutoGenerateColumns"False" CanUserSortColumns"False" CanUserAddRows"False" Margin"5"> <!--鼠标经过事件--> <DataGrid.RowStyle> <Style TargetType"…

小程序怎么打出横线效果_成都小程序开发:哪些因素会影响小程序的运营效果?...

相信现在微信小程序对于大家来说都不陌生了&#xff0c;目前小程序在市场中的占有率比较高&#xff0c;也是用户比较喜欢的平台。对于初次开发小程序的企业商家&#xff0c;在小程序的开发运营时&#xff0c;往往会有一些细节性的问题&#xff0c;影响到小程序的运营效果。我们…

Android监听ScrollView滑动到顶端和底部

Android监听ScrollView滑动到顶端和底部package cn.testscrollview;import android.os.Bundle;import android.view.MotionEvent;import android.view.View;import android.view.View.OnTouchListener;import android.widget.ScrollView;import android.app.Activity;/*** Demo…

前端学习(1484):json-server工具使用

创建文件 json.db {"brands": [{"name": "TCL","date": "2018-05-30T08:07:20.0892","id": 1},{ "name": "TCL", "date": "2018-05-30T08:07:20.0892", "id"…

快照速度_网络推广——网络推广专员如何看待网站快照更新快慢问题?

百度搜索引擎针对网站快照更新的问题曾有言明&#xff0c;表示网站快照的更新快慢与网站权重没有太多的直接关系&#xff0c;因为搜索引擎对网站抓取频率与快照更新是两个不同的概念&#xff0c;然而有很多站长表示快照更新慢是不是因为网站内部出现问题&#xff1f;或者是网站…

浙江大学计算机学院工业设计复试比,2021浙江大学计算机学院工业设计工程研究生入学考试范围调整啦...

关于发布工业设计工程研究生入学考试范围的通知本通知为预通知&#xff0c;如有调整&#xff0c;以浙江大学研究生院正式发布的2021年硕士研究生招生简章及招生目录为准。自2021年硕士研究生招生考试(2020年冬季)起&#xff0c;浙江大学工业设计工程(计算机学院、软件学院)考试…