//
// 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

最新文章

  1. asp.net 手工调用 WS(Get)方法:
  2. [OC笔记]@property之个人理解,大神轻拍
  3. LintCode Balanced Binary Tree
  4. 剖析ECMALL的登录机制
  5. Android(java)学习笔记195:学生信息管理系统案例(SQLite + ListView)
  6. 自定义view(自定义view的时候,三个构造函数各自的作用)
  7. 【Howie玩docker】-Docker常用命令操作
  8. 一个轻client,多语言支持,去中心化,自己主动负载,可扩展的实时数据写服务的实现方案讨论
  9. 实现ie6下的居中
  10. 利用python深度学习算法来绘图
  11. python_如何快速安装第三方库?
  12. Wcf host
  13. python turtle 书写新年快乐
  14. 第33章 密码学(Cryptography),密钥(Keys)和HTTPS - Identity Server 4 中文文档(v1.0.0)
  15. Gym101237C The Palindrome Extraction Manacher、SAM、倍增
  16. json序列化以及反序列化存在多个对象时候的处理
  17. Yii restful api跨域
  18. Cow Contest---poj3660
  19. 强制另存文件和加扩展名的代码c#
  20. CentOS安装Zabbix Agent

热门文章

  1. pycharm输入代码后,没有补全提示
  2. Java(43)JDK新特性之方法引用
  3. Redis分布式锁的正确实现方式[转载]
  4. PostMan生成的测试报告 工具node.js、步骤、结果
  5. vue介绍啊
  6. 单片机零基础学习之从“点灯”入门STM32
  7. Python中的括号()、[]、{}
  8. .Net(c#)汉字和Unicode编码互相转换实例
  9. scrapy 的response 的相关属性
  10. Java基础语法5-运算符