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;但当面对复杂问题时&#…

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

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

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

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

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

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

前端学习(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;或者是网站…

kafka python框架_为什么选择R而不是Python做ETL

导读&#xff1a;1. 打破R慢的印象&#xff0c;ETL效率显著优于Python&#xff0c;堪比spark&#xff0c;clickhouse2. 对比python中的datatable、pandas、dask、cuDF、modin&#xff0c;R中data.table以及spark、clickhouse3. 探讨R中的ETL体系ETL在数据工作中起着至关重要的作…

k型热电偶材料_电热汇分享热电偶测温元件符号、标准及参数详解

有人咨询电热汇问&#xff1a;热电偶测温元件符号、标准及参数是什么&#xff1f;今天来详细介绍一下。一、热电偶测温元件符号当导电物质处于温度时&#xff0c;其电子或空穴会随着温度梯度由高温区往低温区移动&#xff0c;由此产生的电荷堆积的现象称作热电效应&#xff0c;…

计算机ip地址配置参数,指定电脑的IP地址和DNS等参数配置方法

使用宽带路由器的话一般建议手工指定电脑的IP地址和DNS等参数&#xff0c;设置方法参考下文。如果你使用的是Windows 2000或Windows XP系统&#xff0c;请点击 “网上邻居”――> “本地连接”――>“属性”――>“Internet协议 (TCP/IP)属性”&#xff0c;将会看到如…

使用 ServiceStack 构建跨平台 Web 服务(转)

出处:http://www.cnblogs.com/shanyou/p/3348347.html 本文主要来自MSDN杂志《Building Cross-Platform Web Services with ServiceStack》&#xff0c;Windows Communication Foundation (WCF) 是一个相当优秀的服务框架&#xff0c;当我们讨论跨平台的服务的时候&#xff0c;…

框架详解_详解:python Web框架flask表单实现(建议收藏)

今天为大家带来的内容是&#xff1a;python框架flask表单实现详解文章内容主要介绍了python框架flask表单实现详解,文中通过示例代码介绍的非常详细&#xff0c;对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下&#xff01;&#xff01;&#xff01;表单表单…

共享内存中使用指针_详解c++中字符指针数组的使用

之前有写过一篇叫c中动态数组的使用&#xff0c;今来看看c中的字符指针数组的使用。涛哥&#xff1a;c中的动态数组使用​zhuanlan.zhihu.com指针数组&#xff0c;就指向指针的指针&#xff0c;很早以前在说指针的时候说过&#xff0c;但后来发现很多人还是比较难以理解&#x…

软件测试用例项目写作,通用测试用例写作方法

测试用例工作过程软件测试用例设计和软件测试用例写作软件测试用例设计&#xff1a;从设计层面考虑(功能性、可用性、安全性等方面)&#xff1b;软件测试用例写作&#xff1a;指的是软件测试用例的写作规范(格式、标识的命名规范等)软件测试用例设计设计出用例的内容&#xff0…

二叉树学习笔记--先序遍历

首先数据二叉树中数据存储如图&#xff0c;n代表节点为空 &#xff0c;此时退出当前函数。 分解各个步骤如图&#xff0c;为了简化&#xff0c;将节点中的数据代表节点&#xff0c;先left执行&#xff0c;left执行前先输出数据&#xff0c;left执行时&#xff0c;right等待。此…

apache cgi 模块安装

apache安装,请参照:http://httpd.apache.org/docs/2.4/ 安装系统: Fedora release 21 (Twenty One) (x64) 版本:Server version: Apache/2.4.12 (Unix) 安装方式: 源码安装, 源文件目录: /home/web/docs/soft/httpd-2.4.12 安装目录: /usr/local/apache2 在安装apache 之后,…