设为首页 加入收藏

TOP

LeetCode之小孩分糖果
2015-07-20 17:50:34 来源: 作者: 【 】 浏览:1
Tags:LeetCode 小孩 糖果

给定一群站好队的小孩并且按某项分值排名(姑且假设为年龄吧),年龄大的要比他身边年龄小的拿的糖要多,求怎么分配糖果使得分配的糖果数最少。

用一个数组从左到右再从右到左的遍历,向前遍历时若右边的比左边的大则其值为前一个糖果数+1,向后遍历时则判断如果比后面的小孩的年龄要大且糖果数比其还少则更改其糖果数为后面小孩分的糖果数+1.

具体描述代码:

#include
  
   
#include
   
     using namespace std; int candy(vector
    
      &a){ int len=a.size(); if(len==0||len==1) return len; int sum=0; int *candys = new int[len]; candys[0]=1; for(int i=1;i
     
      a[i-1]) candys[i]=candys[i-1]+1; else candys[i]=1; } sum=candys[len-1]; for(int i=len-2;i>=0;i--) { if( a[i]>a[i+1] && ( candys[i+1]+1 > candys[i] )) candys[i]=candys[i+1]+1; sum+=candys[i]; } return sum; } int main() { int Array[]={4,2,3,4,1}; vector
      
        c(Array,Array+5); cout<
       
        

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇UVA 11020 - Efficient Solutions.. 下一篇uva 12130 - Summits(BFS)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Sphinx : 高性能SQL (2025-12-24 10:18:11)
·Pandas 性能优化 - (2025-12-24 10:18:08)
·MySQL 索引 - 菜鸟教 (2025-12-24 10:18:06)
·Shell 基本运算符 - (2025-12-24 09:52:56)
·Shell 函数 | 菜鸟教 (2025-12-24 09:52:54)