//
// Created by Administrator on 2021/7/27.
// #ifndef C__TEST01_HOUSEROBBER2_HPP
#define C__TEST01_HOUSEROBBER2_HPP
#include <iostream>
#include <vector>
using namespace std; class HouseRobber2 {
/* 有一 圈 N栋房子(0 - N-1),房子i里有A[i]个金币
* 一个窃贼想选择一些房子偷金币
* 但是不能偷任何挨着的两家邻居,否则会被警察逮住
* 最多偷多少金币
* 例子:
* 输入:A = {3, 8, 4}
* 输出:8(只偷第二家的金币)
* */
public:
HouseRobber2(vector<int> An);
int HouseRobber2DP(vector<int> &A);
private:
vector<int> A;
}; HouseRobber2::HouseRobber2(vector<int> An):
A(An){
A.resize(An.size());
}
int HouseRobber2::HouseRobber2DP(vector<int> &A) {
if(A.empty()) {
return 0;
}
int N = A.size();
//f[N]表示第N家时的最大偷的钱
vector<int> f1(N);
vector<int> f2(N);
f1[0] = 0;
f2[0] = 0;
for(int i = 1; i < N; ++i){
//没有偷最后一个房子
f1[i] = f1[i-1];
if(i > 1) {
f1[i] = max(f1[i - 2] + A[i - 1], f1[i - 1]);
}
//没有偷第一个房子
if(i == 1){
f2[1] = A[1];
continue;
}
f2[i] = f2[i-1];
if(i > 1) {
f2[i] = max(f2[i - 2] + A[i], f2[i - 1]);
}
}
return max(f1[N-1], f2[N-1]);
//return max(f1[N-1],f2[N-1]);
} #endif //C__TEST01_HOUSEROBBER2_HPP

HouseRobber II的更多相关文章

  1. leetcode日记 HouseRobber I II

    House Robber I You are a professional robber planning to rob houses along a street. Each house has a ...

  2. lintcode:打劫房屋II

    题目 打劫房屋II 在上次打劫完一条街道之后,窃贼又发现了一个新的可以打劫的地方,但这次所有的房子围成了一个圈,这就意味着第一间房子和最后一间房子是挨着的.每个房子都存放着特定金额的钱.你面临的唯一约 ...

  3. [LeetCode]House Robber II (二次dp)

    213. House Robber II     Total Accepted: 24216 Total Submissions: 80632 Difficulty: Medium Note: Thi ...

  4. House Robber I & II & III

    House Robber You are a professional robber planning to rob houses along a street. Each house has a c ...

  5. 【leetcode】198.HouseRobber

    198.HouseRobber You are a professional robber planning to rob houses along a street. Each house has ...

  6. Leetcode 笔记 113 - Path Sum II

    题目链接:Path Sum II | LeetCode OJ Given a binary tree and a sum, find all root-to-leaf paths where each ...

  7. Leetcode 笔记 117 - Populating Next Right Pointers in Each Node II

    题目链接:Populating Next Right Pointers in Each Node II | LeetCode OJ Follow up for problem "Popula ...

  8. 函数式Android编程(II):Kotlin语言的集合操作

    原文标题:Functional Android (II): Collection operations in Kotlin 原文链接:http://antonioleiva.com/collectio ...

  9. 统计分析中Type I Error与Type II Error的区别

    统计分析中Type I Error与Type II Error的区别 在统计分析中,经常提到Type I Error和Type II Error.他们的基本概念是什么?有什么区别? 下面的表格显示 b ...

随机推荐

  1. [spring-rabbit]自动配置原理

    1 一个简单的示例 在Spring Boot项目中使用spring-rabbit时,需要经过以下几个步骤: 引入依赖. 配置基本连接信息. 创建消息发布者,并发送消息. 创建消息消费者,监听消息并处理 ...

  2. Python - faker

    安装 faker pip install Faker pip install Dumper 设置生成器 from faker import Faker fake = Faker() 它可以通过访问以想 ...

  3. change or reset WSL password

    change or reset WSL password To change or reset your password, open the Linux distribution and enter ...

  4. “介绍一下自己吧”——记2020BUAA软工团队介绍和采访

    写在前面 项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任建) 这个作业的要求在哪里 团队作业-团队介绍和采访 团队介绍 团队名称 我们是 BUAA软软软件工程小队 ,简称 ...

  5. [对对子队]会议记录5.24(Scrum Meeting10)

    今天已完成的工作 梁河览 ​ 工作内容:修改第一关的新手引导 ​ 相关issue:优化初步导出版本 ​ 相关签入:fix:改进第一关的新手引导 何瑞 ​ 工作内容:为加速按钮添加锚点 ​ 相关issu ...

  6. Noip模拟31 2021.8.5

    T1 Game 当时先胡了一发$\textit{Next Permutation}$... 然后想正解,只想到贪心能求最大得分,然后就不会了.. 然后就甩个二十分的走了... 正解的最大得分(叫它$k ...

  7. 嵌入式单片机之STM32F103C8T6最小系统板电路设计参考

    STM32F103C8T6最小系统板电路设计 一.电源部分 设计了一个XH插座,以便使用3.7V锂电池供电,接入电压不允许超过6V. 二.指示灯部分 电源指示灯可以通过一个短路帽控制亮灭,以达到节电的 ...

  8. 万维网www与HTTP协议

    文章转自:https://blog.csdn.net/weixin_43914604/article/details/105901440 学习课程:<2019王道考研计算机网络> 学习目的 ...

  9. java性能优化常用工具jps、jstat、jinfo

    jps:虚拟机进程状况工具 jps可以用来查看虚拟机进程,基本等同于ps -ef|grep java #查看jps的使用文档 [root@localhost script]# jps -help us ...

  10. Ubuntu中python的mysql操作

    1.在已经安装了python和MySQL数据库的前提下使用pip3 install PyMySQL命令 2. 建立链接: (1)首先使用命令python 进入编程模式,再导入包: import pym ...