江汉暑期小测第五题——分发糖果思路

题目描述
老师想给孩子们分发糖果,有 N 个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分。你需要按照以下要求,帮助老师给这些孩子分发糖果:每个孩子至少分配到 1 个糖果。相邻的孩子中,评分高的孩子必须获得更多的糖果。那么这样下来,老师至少需要准备多少颗糖果呢?

输入格式
第一行一个 n,表示孩子数。 (1≤n≤100)
接下来一行,输入n个孩子的评分 。

输出格式
糖果数

样例
Input 1
3
1 0 2
Output 1
5
样例解释
解释: 你可以分别给这三个孩子分发 2、1、2 颗糖果。

数据范围
1<=n<=100 1<=孩子的分数<=10

解题思路

这道题的思路主要涉及到贪心算法的应用。目标是确保每个孩子至少得到一颗糖果,并且相邻的孩子中评分高的孩子得到的糖果更多。为了解决这个问题,我们可以分两步来执行贪心策略:

第一步:从左到右遍历

  • 首先,我们从左到右遍历孩子的评分列表,保证每个孩子的糖果数至少比其左侧(如果存在)评分低的孩子多一颗。
  • 这可以通过一次遍历实现,同时维护一个当前应分配的最小糖果数,以确保相邻且评分更高的孩子获得更多糖果。
  • 具体做法是,初始化一个数组candies,用于存储每个孩子应得的糖果数,初始时都设为1(因为每个孩子至少得到一颗糖果)。然后从左到右遍历评分列表,如果当前孩子的评分高于前一个孩子的评分,则当前孩子得到的糖果数应该是前一个孩子糖果数加1。

第二步:从右到左遍历

  • 在第一步之后,我们可能遇到一个问题:虽然相邻的孩子中评分高的得到了更多的糖果,但是可能存在评分较高的孩子(但不是相邻的)得到的糖果数反而比评分低的孩子少的情况。
  • 为了解决这个问题,我们需要进行第二步遍历。
  • 从右到左遍历评分列表,比较当前孩子与右侧(如果存在)孩子的评分和糖果数。如果当前孩子的评分高于右侧孩子,但糖果数却不多于右侧孩子,我们需要更新当前孩子的糖果数为右侧孩子糖果数加1,以确保评分高的孩子得到更多糖果。
13 个赞

{\color{green} 我这一题是满分,在此发个思路}

3 个赞

修改了

把你的评论删掉

哥们删你的评论

1 个赞

那就点个赞吧

1 个赞

把截图删了

1 个赞

快点

要是这个话题封了,我就去找管理

现在也行

@桃桃J 这人发AC截图

啊,怎么了

@桃桃J 这人有AC截图

高镜淞

1 个赞

没事了,他删了

1 个赞

《点个赞吧》

1 个赞

不点也行

1 个赞

呜呜呜我写了从左往右没写从右往左

现在和管理说他发截图 之前说点个赞吧 你可真是双面人啊

能不能撤销点赞,我的意思是想说 我这篇思路怎么样,不是题解怎么样