GEEK编程练习— —发糖果问题

原创 2016年06月01日 22:41:38

题目

假设N个小孩站成一排,每个小孩被分配了一个整数号码。要按照如下的要求给孩子们发糖。
1、每个小孩至少有一颗糖果
2、号码大的孩子比相邻的孩子分到的糖果要多
求最少要发出几颗糖果

输入

0 1 3 1 4

输出

9

分析

可以前后循环两遍,第一遍从前往后,把相邻的两个小孩中,前面号码比后面号码大的多发糖;第二遍从后往前,同样把相邻孩子中,后面号码比前面号码大的多发糖;最后加和得到结果。

代码

#include <iostream>
#include <vector>
#include <numeric>

using namespace std;

int main()
{
    vector<int> ratings;
    int tmp;
    while (cin >> tmp)
        ratings.push_back(tmp);

    const int n = ratings.size();
    vector<int> increment(n);

    for (int i = 1, inc = 1; i < n; i++)
    {
        if (ratings[i] > ratings[i - 1])
                increment[i] = max(inc++, increment[i]);
        else
            inc = 1;
    }
    for (int i = n - 2, inc = 1; i >= 0; i--)
    {
        if (ratings[i] > ratings[i + 1])
            increment[i] = max(inc++, increment[i]);
        else
            inc = 1;
    }

    cout << accumulate(increment.begin(), increment.end(), n);
    return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

蓝桥杯 2014年javaB组 编程题 分糖果问题

标题:分糖果     有n个小朋友围坐成一圈。老师给每个小朋友随机发偶数个糖果,然后进行下面的游戏:     每个小朋友都把自己的糖果分一半给左手边的孩子。     一轮分糖后,拥有...

[编程题]京东2016-买糖果

代码写的有点繁琐,欢迎指正~题目来源:赛码网 买糖果(京东2016实习生真题)题目描述某糖果公司专门生产儿童糖果,它最受儿童欢迎的糖果有A1、A2两个序列,均采用盒式包装。包装好的A1类糖果体积为一...

GEEK编程练习— —数组去重

数组消除重复元素的题目一般来说都是最基本的,没什么太大的难度,而且大部分时候直接使用STL算法或容器的性质就可搞定。让我们来看题目吧~题目一输入一个已经排好序的数组,去除重复元素,输出新数组的长度。 ...

GEEK编程练习— —最长回文子序列LPS

最长回文子序列LPS(Longest Palindromic Subsequence)也是编程题目里面经常出现的一种,但是更经常出现的是最长回文子串(Longest Palindromic Subst...

GEEK编程练习— —两个已序数组的中值

题目给定两个已经排序好的数组,找到两者的中值。分析首先把这个问题可以化成一般形式,寻找两个已序数组中所有元素的第k大元素。 1、最直接的解法,合并两个数组然后求第k大的元素。但是我们仅仅需要第k大的...

GEEK编程练习— —字符串匹配

题目给定字符串P和T,要求从T中找出与P相同的所有子串,并返回子串位置。输入str strsstrstrl输出1 5 8分析这其实是字符串模式匹配的问题。简单科普一下,模式匹配又可分为单模式匹配和多模...

GEEK编程练习— —螺旋矩阵

今天的题目是一道回型矩阵的题目,也可以称为蛇形矩阵。输入一个正整数n,输出一个如下的回型矩阵 n=1的回型矩阵 1n=2的回型矩阵 1 2 4 3n=3的回型矩阵 ...

GEEK编程练习— —zigzag矩阵

题目输入矩阵规模N,输出zigzag矩阵。 zigzag顺序为下图所示 输入 5 输出 0 1 5 6 14 2 4 7 13 15 3 8 12 16 21 9 11 17 ...

GEEK编程练习— —连续出现最多子串

题目求一个字符串中连续出现次数最多的子串如果字符串是abcbcbcabc,这个连续出现次数最多的子串是bc,连续出现次数为3次。如果类似于abcccabc,则连续出现次数最多的子串为c,次数也是3次。...

C++ 编程—从问题分析到程序设计

  • 2012年01月14日 16:01
  • 42.39MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:GEEK编程练习— —发糖果问题
举报原因:
原因补充:

(最多只允许输入30个字)