算法018:按摩师想挣最多钱

阅读: 评论:0

算法018:按摩师想挣最多钱

算法018:按摩师想挣最多钱

题目:按摩师想挣最多钱一个有名的按摩师会收到源源不断的预约请求,每个预约都可以选择接或不接。在每次预约服务之间要有休息时间,因此她不能接受相邻的预约。给定一个预约请求序列,替按摩师找到最优的预约集合(总预约时间最长),返回总的分钟数。示例 1:输入: [1,2,3,1]输出: 4解释: 选择 1 号预约和 3 号预约,总时长 = 1 + 3 = 4。示例 2:输入: [2,7,9,3,1]输出: 12解释: 选择 1 号预约、 3 号预约和 5 号预约,总时长 = 2 + 9 + 1 = 12。示例 3:输入: [2,1,4,5,3,1,1,3]输出: 12解释: 选择 1 号预约、 3 号预约、 5 号预约和 8 号预约,总时长 = 2 + 4 + 3 + 3 = 12。思路:
动态规划:做好生意,工作最长时间,但是要劳逸结合,不能累着自己了。

1.代码如下Massage.java:

package com.yuhl.right.leetcode;/*** @author yuhl* @Date 2020/10/25 8:05* @Classname Massage* @Description* 按摩师想挣最多钱* 一个有名的按摩师会收到源源不断的预约请求,每个预约都可以选择接或不接。在每次预约服务之间要有休息时间,因此她不能接受相邻的预约。给定一个预约请求序列,替按摩师找到最优的预约集合(总预约时间最长),返回总的分钟数。* 示例 1:* 输入: [1,2,3,1]* 输出: 4* 解释: 选择 1 号预约和 3 号预约,总时长 = 1 + 3 = 4。** 示例 2:* 输入: [2,7,9,3,1]* 输出: 12* 解释: 选择 1 号预约、 3 号预约和 5 号预约,总时长 = 2 + 9 + 1 = 12。** 示例 3:* 输入: [2,1,4,5,3,1,1,3]* 输出: 12* 解释: 选择 1 号预约、 3 号预约、 5 号预约和 8 号预约,总时长 = 2 + 4 + 3 + 3 = 12。*/
public class Massage {public static void main(String[] args) {int[] nums = {2,1,4,5,3,1,1,3};int res = massage(nums);System.out.println(res);}public static int massage(int[] nums) {//做好生意,工作最长时间,但是要劳逸结合,不能累着自己了。//公式:dp[i] = Math.max(dp[i-1],dp[i-2]+nums[i]);int dpi_1 = 0;int dpi_2 = 0;for(int i=0; i<nums.length; i++){int dpi = Math.max(dpi_1,dpi_2+nums[i]);dpi_2 = dpi_1;//此行和下一行均是把结果导个手dpi_1 = dpi;//返回的就是dpi。存入dpi_1中}return dpi_1;}}

2.执行结果:

"C:Program FilesJavajdk1.8.0_201" 
12

本文发布于:2024-01-30 17:27:46,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170660686921653.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:按摩师   算法   多钱   想挣最
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23