首页 > 其他分享 >#yyds干货盘点# 动态规划专题:打家劫舍(二)

#yyds干货盘点# 动态规划专题:打家劫舍(二)

时间:2022-11-03 18:32:24浏览次数:87  
标签:yyds int 房间 System 干货 数组 new 打家劫舍 dp

1.简述:

描述

你是一个经验丰富的小偷,准备偷沿湖的一排房间,每个房间都存有一定的现金,为了防止被发现,你不能偷相邻的两家,即,如果偷了第一家,就不能再偷第二家,如果偷了第二家,那么就不能偷第一家和第三家。沿湖的房间组成一个闭合的圆形,即第一个房间和最后一个房间视为相邻。

给定一个长度为n的整数数组nums,数组中的元素表示每个房间存有的现金数额,请你计算在不被发现的前提下最多的偷窃金额。

数据范围:数组长度满足 #yyds干货盘点# 动态规划专题:打家劫舍(二)_i++,数组中每个值满足 #yyds干货盘点# 动态规划专题:打家劫舍(二)_spring_02

输入描述:

第一行输入一个正整数 n ,表示数组的长度。

第二行输入 n 个正整数,表示每个房间存有的现金。

输出描述:

输出最多的偷窃金额

示例1

输入:

4
1 2 3 4

输出:

6

说明:

最优方案是偷第 2 4 个房间
示例2

输入:

3
1 3 6

输出:

6

说明:

由于 1 和 3 是相邻的,因此最优方案是偷第 3 个房间

2.代码实现:

import java.util.Scanner;

/**
* @program: springDemo
* @author: JiaLe Hu
* @create: 2022-03-11 10:08
**/

public class Main {
public static void main(String[] args) {
Scanner reader = new Scanner(System.in);
int n = reader.nextInt();

int[] p = new int[n];
for (int i = 0; i < n; i++) {
p[i] = reader.nextInt();
}

int[] tmp1 = new int[n - 1];
int[] tmp2 = new int[n - 1];
System.arraycopy(p, 0, tmp1, 0, n - 1);
System.arraycopy(p, 1, tmp2, 0, n - 1);
System.out.println(Math.max(helper(tmp1), helper(tmp2)));
}

public static int helper(int[] p) {
if (p == null || p.length == 0)
return 0;
int n = p.length;
int[][] dp = new int[n][2];

dp[0][0] = 0;
dp[0][1] = p[0];

for (int i = 1; i < n; i++) {
dp[i][0] = Math.max(dp[i - 1][0], dp[i - 1][1]);
dp[i][1] = dp[i - 1][0] + p[i];
}

return Math.max(dp[n - 1][0], dp[n - 1][1]);
}
}

标签:yyds,int,房间,System,干货,数组,new,打家劫舍,dp
From: https://blog.51cto.com/u_15488507/5820708

相关文章

  • 双11在即,分享一些稳定性保障技术干货
    每年一次的双十一大促临近,因此上周末公司组织了一次技术交流闭门会,邀请了电商、物流、文娱内容、生活服务等知名一线互联网公司的技术大牛,一起探讨了一些大促稳定性保障相......
  • #yyds干货盘点#JS 解析 excel 文件
    JS解析excel文件分为如下几步:使用 ​​js​​ 解压缩 ​​excel​​ 文件获取到其中的 ​​sheet​​ 文件内容,然后将 ​​xml​​ 数据解析出来将数据转换成我们想......
  • #yyds干货盘点# 前端歌谣的刷题之路-第一百四十三题-双列布局-浮动
     前言我是歌谣我有个兄弟巅峰的时候排名c站总榜19叫前端小歌谣曾经我花了三年的时间创作了他现在我要用五年的时间超越他今天又是接近兄弟的一天人生难免坎坷大不了......
  • #yyds干货盘点# 前端歌谣的刷题之路-第一百四十四题-双列布局-定位
     前言我是歌谣我有个兄弟巅峰的时候排名c站总榜19叫前端小歌谣曾经我花了三年的时间创作了他现在我要用五年的时间超越他今天又是接近兄弟的一天人生难免坎坷大不了......
  • 【SSL 1458】zzzyyds(DP)
    zzzyyds题目链接:SSL1458题目大意有一个环,一开始全白,每次随机选一个点染黑,如果存在一个白色点两边都是黑色点那它会变成黑色,然后每次染了之后判定白色的数量,如果小于等......
  • 重磅干货 | 从连续的视角看机器学习
    本文于2020年发表于《中国科学:数学》杂志。作者为鄂维南(普林斯顿大学、北京大数据研究院)、马超(普林斯顿大学)和吴磊(普林斯顿大学)。英文论文PDF文件下载请在本公众号回复关键......
  • 打家劫舍
    你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯......
  • #yyds干货盘点#数据可视化总结
    最近在做可视化相关的项目,借这篇文章今天谈谈数据可视化相关的技术解决方案。数据可视化旨在借助于图形化手段,清晰有效地传达与沟通信息(来源于bd).在我们生活中最常见的,就有......
  • #yyds干货盘点# 动态规划专题:计算字符串的编辑距离
    1.简述:描述Levenshtein 距离,又称编辑距离,指的是两个字符串之间,由一个转换成另一个所需的最少编辑操作次数。许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删......
  • #yyds干货盘点# 动态规划专题:正则表达式匹配
    1.简述:描述请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。在本题中,匹配是指字符串的所......