zoukankan      html  css  js  c++  java
  • 【Leetcode】面试题 17.16. 按摩师(每日一题)


    题目链接:面试题 17.16. 按摩师


    题意:一个有名的按摩师会收到源源不断的预约请求,每个预约都可以选择接或不接。在每次预约服务之间要有休息时间,因此她不能接受相邻的预约。给定一个预约请求序列,替按摩师找到最优的预约集合(总预约时间最长),返回总的分钟数。


    题解:在这几天做了校招笔试题之后,突然做一个这么简单的dp真是开心极了。。

    不能接受相邻的预约,也就是告诉我们它此刻的状态是由上上个状态以及上一个状态决定的。

    取上一个预约,当前预约不可接受,如果不服务上一个预约,那么我本次预约就可以接待。

    很容易得到状态方程 dp[i] = max(dp[i-1],dp[i-2] + nums[i])  

    注意坑点:它有空值。。和只有一个预约任务的情况。

    代码:

     1 class Solution {
     2 public:
     3     const int maxn = 1010;
     4     int massage(vector<int>& nums) {
     5         int len = nums.size();
     6         if(len == 0)    return 0;
     7         if(len == 1)    return nums[0];
     8         int dp[maxn];
     9         dp[0] = nums[0];
    10         dp[1] = max(nums[0],nums[1]);
    11         
    12         
    13         for(int i = 2;i < len ;i++){
    14             dp[i] = max(dp[i-1],dp[i-2] + nums[i]);
    15         }
    16 
    17         return dp[len-1];
    18     }
    19 };
  • 相关阅读:
    alias这个命令还是很有用的
    为什么不推荐用破解版的winrar
    chrome headless
    关于PDF的一些书籍
    PDF的一些工具
    3DPDF是个什么东西?
    你可能不知道的pdf的功能
    为什么一些公司把dwg文件转化为pdf
    关于pdf阅读器的选择
    接外包怎么保护自己的作品
  • 原文地址:https://www.cnblogs.com/Asumi/p/12562898.html
Copyright © 2011-2022 走看看