• candy——动态规划


    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?

     1 int candy(vector<int> &ratings) {
     2         //题意:N个孩子站成一排,每个孩子分配一个分值。给这些孩子派发糖果,满足如下要求:
     3         //每个孩子至少一个
     4         //分值更高的孩子比他的相邻位的孩子获得更多的糖果
     5         //求至少分发多少糖果?
     6         int len=ratings.size();
     7         if(len==1) return 1;
     8           
     9         int sum=0;
    10         vector<int> v(len,1);//初始将每个孩子的糖果数都设为1
    11           
    12         //从左向右扫描,保证一个方向上分数更大的糖果更多
    13         for(int i=1;i<len;i++){
    14             if(ratings[i] > ratings[i-1])
    15                 v[i]=v[i-1]+1;
    16         }
    17         //从右向左扫描,保证另一个方向上分数更大的糖果更多
    18         for(int i=len-2;i>=0;i--){
    19             if(ratings[i] > ratings[i+1] && v[i] <= v[i+1])
    20                 v[i]=v[i+1]+1;
    21         }
    22           
    23         for(int i=0;i<len;i++){
    24             sum+=v[i];
    25         }
    26         return sum;
    27     }
    28 };
  • 相关阅读:
    删除指定字符
    Palindromes&nbsp;_easy&nbsp;version
    统计元音
    查找最大元素
    首字母变大写
    Intent加强
    GUI_键盘事件
    GUI_鼠标事件
    GUI_事件监听机制与ActionListener演示
    GUI概述与Frame演示
  • 原文地址:https://www.cnblogs.com/zl1991/p/6964113.html
Copyright © 2020-2023  润新知