美文网首页
算法6 抢劫

算法6 抢劫

作者: holmes000 | 来源:发表于2017-09-24 20:11 被阅读0次

题目:你是一名专业强盗,计划沿着一条街打劫。每间房屋都储存有一定金额的钱,唯一能阻止你打劫的约束条件就是房屋之间有安全系统相连,如果同一个晚上有两间相邻的房屋被闯入,它们就会自动联络警察,因此不可以打劫相邻的房屋。
给出一个表示每个房子的金额的非负整数的列表,确定你今天晚上可以抢救的最大金额,而不提醒警察。
思路:加入int[] sum={1,2,3,4},在不能抢相邻房子的前提下,
4栋房子我们可以最多抢2栋,即挑选出两个加和最大值 ,在int[] sum={1,2,3,4,5},5栋房子时我们可以最多可以抢3栋,但是不见得三栋的的和比抢两栋的钱数多。所以要找最大值,又要不相邻,我们需要用到用状态转移方程:sum[i] += Math.max(sum[i-2], sum[i-3]); 即抢第四栋房子时,要在去除抢第一栋或抢第二栋时的最大值。(这个的sum[i-2],并不是那个i-2索引的值而是通过状态转移方程求出的和)。

代码

public static int robber(int[] sum){
    if (sum== null || sum.length == 0) {
        return 0;
    }
    //如果只有一个元素,返回这个元素值
    if(sum.length==1){
        return sum[0];
    }
    else if(sum.length==2){
        //如果有两个元素,返回其中较大的值
        return Math.max(sum[0], sum[1]);
    }else if(sum.length==3){
        //如果有三个元素,比较第一个元素和第三个元素之和与第二个元素的值,返回较大者
        return Math.max(sum[0]+sum[2], sum[1]);
    }
    //把第一个和第三个元素的和赋给第三个元素,以便以后比较
    if (sum.length > 3) {
        sum[2] += sum[0];
    }
    //从第四个元素开始处理就需要用到公式了,也是从第四个开始重新赋值,元素少于四的时候,公式不成立
    int i = 3;
    for(;i<sum.length;i++){
        sum[i] += Math.max(sum[i-2], sum[i-3]);
    }
    //举个例子:如有4个元素,i=3,执行一次循环之后(这个时候i=4):最后一个元素=最后一个元素+前两个中较大的;
    return Math.max(sum[i-1], sum[i-2]);//再比较最后一个和倒数第二个,i-1是最后一个元素因为之前的循环使此时i=sum.length+1
}

相关文章

  • 算法6 抢劫

    题目:你是一名专业强盗,计划沿着一条街打劫。每间房屋都储存有一定金额的钱,唯一能阻止你打劫的约束条件就是房屋之间有...

  • 新概念英语第六课学习笔记(惊天大劫案)

    Lesson 6: Smash-and-grab 砸橱窗抢劫 The expensive shops in a f...

  • 第十七章 惊天大案!

    1996年的8月27日,爆发了第三次特大抢劫案。这是继2月、6月抢劫案以后爆发的第三次抢劫案。 —武警警卫局 “在...

  • BAT面试算法进阶(8)- 删除排序数组中的重复项

    BAT面试算法进阶(7)- 反转整数BAT面试算法进阶(6)- BAT面试算法进阶(6)-最长回文子串(方法二)...

  • BAT面试算法进阶(7)- 反转整数

    BAT面试算法进阶(6)- BAT面试算法进阶(6)-最长回文子串(方法二)BAT面试算法进阶(5)- BAT面试...

  • 抢劫

    戴着鸭舌帽的中年男子在超市附近徘徊,地上已有六七根吸过的烟头。终于他似乎是下定了决心,快速戴上装在上衣口袋里的墨镜...

  • “抢劫”

    好容易放学了,也扫完地了,我和一群同学在校园里嬉戏着,准备回家。刚走过了水龙头那地儿附近,后面突然之间想起了一声洪...

  • 《抢劫》

    《抢劫》 / 一个流浪汉饿昏了头 跑到猪圈里抢劫 结果被几头猪发现了扭送到法庭 抢劫罪在猪圈是重罪 轻则三五年 重...

  • 抢劫

    “保险门挺厚实的嘛。不过电锯一会就能把你打开了。”小丑抚摸着铁门。 “都蹲好了!不动什么事都没有!”犀牛吼着人质。...

  • 抢劫

    他再次复活是的,和一般游戏一样,复活意味着上一次行动的失败,他在抢银行时候被赶来的警察一枪爆头,瞬间击毙,不过,他...

网友评论

      本文标题:算法6 抢劫

      本文链接:https://www.haomeiwen.com/subject/szhlextx.html