zoukankan      html  css  js  c++  java
  • 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 };
  • 相关阅读:
    js练习题2
    js样式
    js小练习
    css动画样式
    css盒子、布局样式
    css一般样式
    css样式、选择器
    html表格、表单
    html 标签
    mysql连接查询,子查询,联合查询
  • 原文地址:https://www.cnblogs.com/zl1991/p/6964113.html
Copyright © 2011-2022 走看看