强盗抢房子(ii)

雪浪snowWave 雪浪snowWave     2022-08-28     434

关键词:

题目:和之前一道抢房子一样,区别是增加了一个条件,房子是环形分布的,就是说不能同时偷第一个和最后一个,因为他们也是挨着的。。

思路:最优解很巧妙的想法,我们已经算过直线分布的了,那么环形分布和直线分布是不是有什么相似之处呢??其实直线分布如果在后面加一个财宝为0的房子,就是环形分布。环形分布只要去掉第一个或者最后一个,就是直线分布。。所以我们分别求第一个到倒数第二个房子区间获得的最大值和第二个到最后一个房子获得的最大值,取两者最大即可。。。

public int rob(int[] nums) {
        int n=nums.length;
        if(n==0) return 0;
        if(n ==1) return nums[0];
        if(n==2) return Math.max(nums[0],nums[1]);
     //0到n-2就是第一个到倒数第二个房子
     //1到n-1就是第二个到最后一个房子
     
return Math.max(f(nums,0,n-2),f(nums,1,n-1)); } private static int f(int[] nums,int s,int e){ int n=nums.length; int[] dp=new int[e-s+1]; dp[0]=nums[s]; dp[1]=Math.max(dp[0],nums[s+1]); for(int i=2;i<e-s+1;i++){ dp[i]=Math.max(dp[i-2]+nums[s+i],dp[i-1]); } return dp[e-s]; }

 

DP数组初始化的原因

...决来自LeetCode.com的aquestion。问题是这样的:你是一名职业强盗,计划抢劫沿街的房屋。每栋房子都藏有一定数量的金钱,唯一阻止你抢劫的限制是相邻的房子都连接了安全系统,如果同一晚两栋相邻的房子被闯入,它会自动联系... 查看详情

lintcode534.打劫房屋ii(代码片段)

...,窃贼又发现了一个新的可以打劫的地方,但这次所有的房子围成了一个圈,这就意味着第一间房子和最后一间房子是挨着的。每个房子都存放着特定金额的钱。你面临的唯一约束条件是:相邻的房子装着相互联系的防盗系统,... 查看详情

微信抢房有什么技巧?

...,我强烈建议大家找到可靠的代理商。我正在寻找自己的强盗,可以向您介绍。如今,确实有很多人在抢劫市场,很多人只是自己抢劫。真正的一代抓斗是通过软件设置程序来操作的。如果有机会给强盗一些朋友可能会感到不舒... 查看详情

robberies(01背包dp变形)(代码片段)

? 题意:一个强盗要抢劫银行又不想被抓到,所以要进行概率分析求他在不被抓的情况下能抢最多的钱。他给定T(样例个数),N(要抢的银行的个数),P(被抓的概率要小于P)Mj(强盗能抢第j个银行Mj元钱),Pj(强盗抢第... 查看详情

sql队列强盗(代码片段)

查看详情

leetcode-houserobberii-213

输入一个数组,a[i]表示第i位置的房子的价值,这些房子围成一个圈,相邻的两个房子不能同时抢,问能抢到的最大的价值和这些题是一个系列http://blog.csdn.net/ac_0_summer/article/details/52348192这里围成一个圈,那么对最后一个房子来... 查看详情

画房子类型题目

http://www.cnblogs.com/easonliu/p/4784858.html很经典。 I是有三种颜色II是有k种颜色 都是同样的思路,递归并且每次使用其他颜色的最小价格来更新当前颜色的最小价格。 II有一个优化,就是用了min1和min2来分别记录从两个方向... 查看详情

武汉微信抢房有什么技巧亲身经历

...事情,有些火爆的楼盘是需要你去抢的。选到自己心仪的房子是每个购房者的心愿!其实微信抢房有什么技巧?要说微信抢房的技巧,其实就一个快字!那么如何才能快,一要看设备,二要看网络。三要看手速。当然还有一些微... 查看详情

多臂强盗:当随机概率低于分配给强盗的成功概率时,为什么我们将奖励增加1(代码片段)

我试图了解使用python的多臂强盗问题。当随机概率小于分配的强盗的成功概率时,我不断遇到返回值1(即奖励)的代码片段。请看下面的代码defreward(prob):reward=0;foriinrange(10):ifrandom.random()<prob:reward+=1returnreward我从以下链接获得... 查看详情

使用 Vowpal wabbit 的上下文强盗

】使用Vowpalwabbit的上下文强盗【英文标题】:ContextualBanditusingVowpalwabbit【发布时间】:2015-08-0620:42:25【问题描述】:在这种情况下,输入之一是选择手臂/动作的概率,但我们如何找到该概率?找到这个概率本身不是一项艰巨的... 查看详情

强盗战争游戏,正确的命令但权限被拒绝?

】强盗战争游戏,正确的命令但权限被拒绝?【英文标题】:BanditWarGame,correctcommandbutpermissiondenied?【发布时间】:2021-12-0317:36:27【问题描述】:我记得我在大学里玩过BanditWargame,所以我想在这个周末再试一次以更新一些知识。... 查看详情

codevs2597团伙

题目描述 Description1920年的芝加哥,出现了一群强盗。如果两个强盗遇上了,那么他们要么是朋友,要么是敌人。而且有一点是肯定的,就是:我朋友的朋友是我的朋友;我敌人的敌人也是我的朋友。 两个强盗是同一团伙... 查看详情

codevs2597团伙

题目描述 Description1920年的芝加哥,出现了一群强盗。如果两个强盗遇上了,那么他们要么是朋友,要么是敌人。而且有一点是肯定的,就是:我朋友的朋友是我的朋友;我敌人的敌人也是我的朋友。 两个强盗是同一团伙... 查看详情

codevs2597团伙

...597团伙 题目描述Description1920年的芝加哥,出现了一群强盗。如果两个强盗遇上了,那么他们要么是朋友,要么是敌人。而且有一点是肯定的,就是:我朋友的朋友是我的朋友;我敌人的敌人也是我的朋友。 两个强盗是同... 查看详情

198.houserobber(代码片段)

问题非负数组表示每个房子拥有的金钱,抢了一个房子后不能抢隔壁房子的,求能抢到的最大数额。Input:[1,2,3,1]Output:4Explanation:1+3=4.思路用dp[i]表示以indexi结尾的子数组里,能抢的金钱最大和(不一定要抢nums[i])。可以得到dp公... 查看详情

强盗分宝石

题目描述:五个海盗抢到了100颗宝石,每一颗都一样大小和价值连城。他们决定这么分:抽签决定自己的号码(1、2、3、4、5)首先,由1号提出分配方案,然后大家表决,当且仅当超过半数的人同意时,按照他的方案进行分配,... 查看详情

p1892[boi2003]团伙并查集(代码片段)

题目描述1920年的芝加哥,出现了一群强盗。如果两个强盗遇上了,那么他们要么是朋友,要么是敌人。而且有一点是肯定的,就是:我朋友的朋友是我的朋友;我敌人的敌人也是我的朋友。两个强盗是同一团伙的条件是当且仅... 查看详情

从小故事带你理解零知识证明|区块链一千零一问

开胃小故事阿里巴巴证明阿里巴巴被强盗抓住,为了保命,他需要向强盗证明自己拥有打开石门的密码,同时又不能把密码告诉强盗。他想出一个解决办法,先让强盗离开自己一箭之地,距离足够远让强盗无... 查看详情