首页 > 打家劫舍(一)
头像 牛客题解官
发表于 2022-04-22 12:52:37
题目主要信息: 给定一个数组,其中代表每家拥有的钱数 小偷每次不能偷取数组中相邻位置的钱,只要不相邻的钱都可以偷 求最多能偷到钱数 举一反三: 学习完本题的思路你可以解决如下题目: BM79.打家劫舍(二) BM80.买卖股票的最好时机(一) BM81.买卖股票的最好时机(二) BM82.买卖股 展开全文
头像 hff5570
发表于 2022-01-30 10:28:06
import java.lang.Math; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums int整型一维数组 展开全文
头像 Double_冰
发表于 2022-05-18 11:03:34
/* 当前家不偷或偷 当前不偷所获最大利润 = max(前一天不偷,前一天偷); dp[i][0] = max(dp[i-1][0],dp[i-1][1]); 当前偷所获最大利润 = 前一天没偷 + 今日所得 dp[i] 展开全文
头像 摸鱼学大师
发表于 2022-02-19 14:38:03
题目主要信息: 给定一个数组,其中代表每家拥有的钱数 小偷每次不能偷取数组中相邻位置的钱,只要不相邻的钱都可以偷 求最多能偷到钱数 具体思路: 或许有人认为利用贪心思想,偷取最多人家的钱就可以了,要么偶数家要么奇数家全部的钱,但是有时候会为了偷取更多的钱,或许可能会连续放弃两家不偷,因此这种方案 展开全文
头像 xqxls
发表于 2022-03-02 21:29:45
题意整理 给定并排的n个房子,每个房子都有一定现金。 现在有一个小偷,想偷到尽可能多的现金,但是不能偷相邻的房间,问最多偷多少现金。 方法一(动态规划) 1.解题思路 状态定义:dp[i]dp[i]dp[i]表示到第i个房间为止,能偷到的最多的现金。 状态初始化:到第0个房间时,最多偷第0个房 展开全文
头像 牛客63292339号
发表于 2022-08-29 10:22:41
对于这题,我们DP[i]数组的意思应该是打劫到第i家的最优解。很明显,如果打劫一家人,由于题目限制,并不能打劫上一家人,但却可以获得这一家的现金,得出: 如果不打劫当前这一家人,那我们就可以获得dp[i-1]的收益.愣着干嘛,求最大值啊!这不就出来了吗?上代码!(c++) class Solutio 展开全文
头像 这题你已经AC了
发表于 2024-06-14 22:25:41
举个例子来算一下如何取最优 [1 3 4 6] 我们从开始选择,此时能够得到的最大值是1, 到时,我们应该在中选择,最大值变为3, 此时到,此时选择是从前一个的最大值和+下标为2-2时的最大值来比较取最大值, 到时,应该从前一个的最大值和+下标为3-2时的最大值,及 我们创建f数组,f[i]表示 展开全文
头像 kiss轩轩
发表于 2024-08-19 10:00:38
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums int整型一维数组 * @r 展开全文
头像 CroMarmot
发表于 2022-02-21 15:51:01
打家劫舍(一) 题意 给定一个数字数组,不能选相邻的两个数,问选出的数的最大的和是多大 方法 深搜(TLE) 分析 我们递归搜索,每次有可选的起始位置。 如果选定这个位置,那么下一层递归,则可选位置从当前位置+2开始 如果不选这个位置,那么下一层递归,可选位置从当前位置+1开始 在递归过程中记录选择 展开全文
头像 actor20181211114881
发表于 2022-03-27 16:51:55
1.对于每一家,可以选择偷或者不偷 `if(偷)` dp[i] = dp[i-2]+nums[i]; `if(不偷)` dp[i] = dp[i-1]; 选择两者中的最大值。 特殊情况, 数组为空,则return 0; 数组长度为1,只能偷这一家,return num 展开全文
头像 勇敢牛牛1号cjp
发表于 2023-08-16 14:28:09
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums int整型一维数组 * 展开全文

等你来战

查看全部