题目描述

There are N children standing in a line. Each child is
assigned a rating value.

You are giving candies to these children subjected to the following
requirements:

  • Each child must have at least one candy.
  • Children with a higher rating get more candies than their
    neighbors.

What is the minimum candies you must give?

题意:n 个小孩,每个小孩有一个评分。给小孩发糖。要求:

    1)每个小孩至少一颗糖

    2)评分高的小孩发的糖比他旁边两个小孩的多

因此最少需要多少糖果才够分?

解题思路:

  遍历两边,首先每个人得一块糖,第一遍从左到右,若当前点比前一个点高就比前者多一块。

这样保证了在一个方向上满足了要求。第二遍从右往左,若左右两点,左侧高于右侧,但

左侧的糖果数不多于右侧,则左侧糖果数等于右侧糖果数+1,这就保证了另一个方向上满足要求。

  最后将各个位置的糖果数累加起来就可以了。

代码实现:

class Solution {
public:
int candy(vector<int> &ratings) {
int n=ratings.size();
//candy set
vector<int>Candy(n,);
//from left to right
for(int i();i<n-;i++){
if(ratings[i+]>ratings[i])
Candy[i+]=Candy[i]+;
}
//from right to left
for(int j=n-;j>;j--){
if(ratings[j-]>ratings[j]&&Candy[j-]<=Candy[j])
Candy[j-]=Candy[j]+;
}
//add all
int sum();
for(auto a:Candy)
sum+=a;
return sum;
}
};

candy(动态规划)的更多相关文章

  1. candy——动态规划

    There are N children standing in a line. Each child is assigned a rating value. You are giving candi ...

  2. Leetcode 动态规划 Candy

    本文senlie原版的,转载请保留此地址:http://blog.csdn.net/zhengsenlie Candy Total Accepted: 16494 Total Submissions: ...

  3. HLOJ1366 Candy Box 动态规划(0-1背包改)

    题目描述: 给出N个盒子(N<=100),每个盒子有一定数量的糖果(每个盒子的糖果数<=100),现在有q次查询,每次查询给出两个数k,m,问的是,如果从N个盒子中最多打开k个盒子(意思是 ...

  4. HDU 5291 Candy Distribution

    Candy Distribution Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Other ...

  5. 【leetcode-135,62,63 动态规划】分发糖果 ,不同路径

    分发糖果 老师想给孩子们分发糖果,有 N 个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分. 你需要按照以下要求,帮助老师给这些孩子分发糖果: 每个孩子至少分配到 1 个糖果. 相邻的孩 ...

  6. 增强学习(三)----- MDP的动态规划解法

    上一篇我们已经说到了,增强学习的目的就是求解马尔可夫决策过程(MDP)的最优策略,使其在任意初始状态下,都能获得最大的Vπ值.(本文不考虑非马尔可夫环境和不完全可观测马尔可夫决策过程(POMDP)中的 ...

  7. 简单动态规划-LeetCode198

    题目:House Robber You are a professional robber planning to rob houses along a street. Each house has ...

  8. [LeetCode] Candy 分糖果问题

    There are N children standing in a line. Each child is assigned a rating value. You are giving candi ...

  9. 动态规划 Dynamic Programming

    March 26, 2013 作者:Hawstein 出处:http://hawstein.com/posts/dp-novice-to-advanced.html 声明:本文采用以下协议进行授权: ...

随机推荐

  1. MySQL InnoDB锁机制

    概述: 锁机制在程序中是最常用的机制之一,当一个程序需要多线程并行访问同一资源时,为了避免一致性问题,通常采用锁机制来处理.在数据库的操作中也有相同的问题,当两个线程同时对一条数据进行操作,为了保证数 ...

  2. JAVA_SE基础——20.数组的常见操作

    1.遍历数组 使用for循环来遍历数组 代码如下: public class Ergodic { public static void main(String[] args) { int[] arr ...

  3. JAVA_SE基础——6.标识符&关键字

    学会写helloworld之后,  我们就开始来认识标识符&关键字 一.标识符 标识符是指可被用来为类.变量或方法等命名的字符序列,换言之,标识符就是用户自定义的名称来标识类.变量或方法等.更 ...

  4. Python内置函数(54)——callable

    英文文档: callable(object) Return True if the object argument appears callable, False if not. If this re ...

  5. java double相加

    public class DoubleUtil { private static final int DEF_DIV_SCALE = 10; /** * 相加 * * @param d1 * @par ...

  6. C++中explicit关键字

    explicit: 防止隐式转换使用. 隐式转换:不同类型的变量可以互相转换,如将一个整形数值赋值给一个类,ClassXX  lei = 4: C++中, 一个参数的构造函数(或者除了第一个参数外其余 ...

  7. Windows10下的docker安装与入门 (二)使用docker引擎在容器中运行镜像

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何 ...

  8. Java-Maven(六):Eclipse中Maven插件的命令操作

    之前几个章节学习了maven的概念,及maven插件安装后如何创建工程,那么maven工程中是如何使用maven命令呢?本章节将会学习这个话题. 在pom.xml中配置maven命令插件 如果向在ma ...

  9. Django之auth模块(用户认证)

    auth模块简介 auth模块是对登录认证方法的一种封装,之前我们获取用户输入的用户名及密码后需要自己从user表里查询有没有用户名和密码符合的对象, 而有了auth模块之后就可以很轻松的去验证用户的 ...

  10. [翻译] Tensorflow中name scope和variable scope的区别是什么

    翻译自:https://stackoverflow.com/questions/35919020/whats-the-difference-of-name-scope-and-a-variable-s ...