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 };
  • 相关阅读:
    项目经验分享(上)
    socket.io实现在线群聊
    socket.io中文文档
    常用的Sublime Text插件及安装方法
    常用的Atom插件
    atom及其插件activate-power-mode下载安装
    jeesite快速开发平台
    js权威指南
    hexSHA1散列加密解密(不可逆)
    腾讯云企业邮箱
  • 原文地址:https://www.cnblogs.com/Asumi/p/12562898.html
Copyright © 2011-2022 走看看