• Leecode no.198. 打家劫舍


    package leecode;

    /**
    * 198. 打家劫舍
    *
    *
    *你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,
    * 影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,
    *如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。
    *给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。
    *
    * @author Tang
    * @date 2021/9/16
    */
    public class Rob {


    /**
    * 我是一个bu会动态规划的小偷
    * n :房间号n
    * f(n) :按顺序 到n号房的可偷最大金额
    * f(n) = Max(f(n-2) + V(n), f(n-1))
    * base :f(1) = nums[1] ; f(2) = Max(nums[1], nums[2])
    *
    *
    * @param nums
    * @return
    */
    public int rob(int[] nums) {
    if(nums.length == 0) {
    return 0;
    }

    if(nums.length == 1) {
    return nums[0];
    }

    //构建dp tables
    int[] tables = new int[nums.length];
    for(int i = 0; i < nums.length; i++) {
    if(i == 0){
    tables[i] = nums[i];
    continue;
    }
    if(i == 1) {
    tables[i] = Math.max(nums[0], nums[1]);
    continue;
    }

    tables[i] = Math.max(tables[i - 2] + nums[i], tables[i - 1]);
    }
    return tables[nums.length - 1];

    }


    public static void main(String[] args) {
    int[] num = {2,7,9,3,1};
    System.out.println(new Rob().rob(num));

    }

    }
  • 相关阅读:
    java基础知识复习
    红黑二叉查找树(原理、实现)
    Django admin
    redis+sentinel 安装与配置
    浅谈saltstack
    python3 通过smtplib模块发送邮件
    django 自定义分页模块
    chouti项目
    Django 进阶篇二
    Django 进阶篇
  • 原文地址:https://www.cnblogs.com/ttaall/p/15293150.html
Copyright © 2020-2023  润新知