首页 > 编程语言 >10.13算法

10.13算法

时间:2023-10-13 10:05:13浏览次数:45  
标签:偷窃 nums int 金额 算法 房屋 10.13 dp

你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。

给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。

 

示例 1:

输入:[1,2,3,1]
输出:4
解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。
  偷窃到的最高金额 = 1 + 3 = 4 。
示例 2:

输入:[2,7,9,3,1]
输出:12
解释:偷窃 1 号房屋 (金额 = 2), 偷窃 3 号房屋 (金额 = 9),接着偷窃 5 号房屋 (金额 = 1)。
  偷窃到的最高金额 = 2 + 9 + 1 = 12 。

#include <bits/stdc++.h> using namespace std; int rob(vector<int>& nums) {     if(nums.size() == 0){         return 0;     }     if(nums.size() == 1){         return nums[0];     }     int dp[nums.size()];     dp[0] = nums[0];     dp[1] = max(nums[0],nums[1]);     for(int i=2;i<nums.size();i++){         dp[i] = max(dp[i-2]+nums[i],dp[i-1]);     }     return dp[nums.size()-1];
}
int main() {     vector<int> p = {2,1,1,2};     cout << rob(p) << endl;     // TODO: Add your code here     return 0; }   关键在于: 1.动态规划找到状态转移方程,去思考i-1,i-2的情况是怎么样的 2.动态规划最初状态设置好,每个dp[i]都是当前的最佳状态而不是当前值

标签:偷窃,nums,int,金额,算法,房屋,10.13,dp
From: https://www.cnblogs.com/minipython-wldx/p/17761184.html

相关文章

  • 算法学习笔记(30):Kruskal 重构树
    Kruskal重构树这是一种用于处理与最大/最小边权相关的一个数据结构。其与kruskal做最小生成树的过程是类似的,我们考虑其过程:按边权排序,利用并查集维护连通性,进行合并。如果我们在合并时,新建一个节点,其权值为当前处理的边的权值,并将合并的两个节点都连向新建的节点,那么就......
  • 算法训练day30 LeetCode93.78.90
    算法训练day30LeetCode93.78.9093.复原IP地址题目93.复原IP地址-力扣(LeetCode)题解代码随想录(programmercarl.com)使用'.'切割字符串、结束条件为字符串中有三个'.'、同时要确定字符串符合的条件长度为不为1时,首字符不能是0数值大小在[0,255]单个字符在'0'......
  • 树上的最大权连通块:一种换根动态规划与贪心算法的结合
    树上的最大权连通块:一种换根动态规划与贪心算法的结合在计算机科学中,树是一种非常特殊的数据结构,不仅因为它们在存储数据时的效率,还因为它们提供了一种非常直观且强大的方式来解决各种问题。今天,我们将探讨一种特殊类型的问题,即在一棵树中找到一个特殊的子集或连通块,该子集中的节......
  • 串的模式匹配-KMP算法
    一个古老的模式匹配算法。优点在于不需要回溯主串指针。在整个匹配过程中,只需要从头到尾扫描主串一次,方便处理那种大文件。具体实现方法是对子串进行预处理,求得next数组。这个数组记录的信息是:如果子串的当前比较位与主串不匹配,那么接下来应该把子串的哪个位与主串的当前位(因......
  • 10.12算法
    最大子序和给你一个整数数组nums,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组是数组中的一个连续部分。 示例1:输入:nums=[-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组 [4,-1,2,1]的和最大,为 6。示例2:输入:nums=[1]输出:1示例3......
  • 动物识别系统python+Django网页界面+TensorFlow算法模型+数据集训练
    一、简介动物识别系统。基于Python+TensorFlow+Django网页框架+ResNet50算法模型实现实现步骤如下:收集多种动物的图片数据集,并整理归类然后使用TensorFlow搭建ResNet50算法模型网络对数据集进行多次迭代训练最后得到一个精度较高的H5模型文件基于训练好的模型,使用Django开......
  • java算法之排序算法大全
    ①排序所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。排序算法,就是如何使得记录按照要求排列的方法。排序算法在很多领域得到相当地重视,尤其是在大量数据的处理方面。一个优秀的算法可以节省大量的资源。在各个领域中考虑到数据的各种限制......
  • Lnton羚通算法算力云平台智慧反光衣穿戴方案检测
    对于事故多发的施工现场,保障施工质量、施工人员的人身安全以及工地建筑材料和设备的财产安全是建筑企业管理者关注的首要任务。然而,由于每个建筑企业或开发商在地区甚至全国范围内都有多个分散的建筑工地,频繁到现场进行监管和检查需要投入大量人力和精力,因此管理上存在一定困难。Ln......
  • 串模式匹配-BF算法
    一种暴力的串匹配算法。指定主串中查找的起始位置。用两个指针分别遍历主串和子串,如果到达串尾就结束。当遇到子串与主串不匹配时,通过把主串指针回溯到当前起始字符的下一个字符来重新开始匹配。实现代码如下。#include<iostream>usingnamespacestd;#defineMAXLEN255......
  • 简单易学的机器学习算法——Latent Dirichlet Allocation(理论篇)
    引言LDA(LatentDirichletAllocation)称为潜在狄利克雷分布,是文本语义分析中比较重要的一个模型,同时,LDA模型中使用到了贝叶斯思维的一些知识,这些知识是统计机器学习的基础。为了能够对LDA原理有清晰的认识,也为了能够对贝叶斯思维有全面的了解,在这里对基本知识以及LDA的相关知识进......