[导读]:超平老师的Scratch蓝桥杯真题解读系列在推出之后,受到了广大老师和家长的好评,非常感谢各位的认可和厚爱。作为回馈,超平老师计划推出《Python蓝桥杯真题解析100讲》,这是解读系列的第95讲。
先来看看题目的要求吧。
时间限制:3000MS
内存限制:589824K8
编程实现:
老师要奖励N名成绩优秀的同学,首先N名同学按随机顺序排成一排,且每名同学都对应一个成绩(成绩各不相同),然后按照如下规则进行奖励。
规则:
1).每名同学至少奖励1支铅笔;
2).每一名同学拿到铅笔后,都会和左右相邻的同学作比较,如果相邻的同学成绩比自己高,那么铅笔数也一定比自己多,如果相邻的同学成绩比自己低,那么铅笔数一定比自己少。(注意每个人成绩都不同)
当给出要奖励的同学数N,及N名同学的成绩及排序位置,请你按照规则帮助老师计算出最少需要奖励多少支铅笔。
例如:
当N=3,3名同学的成绩分别为:91,92,94。
如果3名同学的排序为:91,94,92,最少需要奖励4支铅笔(成绩为91的同学1支,成绩为94的同学2支,成绩为92的同学1 支);
如果3名同学的排序为:91,92,94,最少需要奖励6支铅笔(成绩为91的同学1支,成绩为92的同学2支,成绩为94的同学3 支)。
输入描述:
第一行输入一个正整数N,表示要奖励的同学数
第二行输入N个正整数,每个正整数表示一名同学的成绩(成绩各不相同),正整数之间以一个英文逗号隔开,正整数的顺序即代表学生的排序
输出描述:
输出一个整数,表示N名同学最少需要奖励的铅笔数
样例输入:
3
91, 94, 92
样例输出:
4
评分标准:
10分:能正确输出一组数据;
10分:能正确输出两组数据;
20分:能正确输出三组数据
20分:能正确输出四组数据。
这是一道算法题,涉及的知识点包括循环、条件、列表和贪心算法等。
[92, 93, 94, 96, 98] =
pencil = [1, 1, 1, 1, 1]
pencil = [1, 2, 3, 4, 5]
score = [96, 95, 94, 93, 90]
pencil = [1, 1, 1, 1, 1]
pencil = [5, 4, 3, 2, 1]
score = [92, 98, 96, 95, 93]
pencil = [1, 1, 1, 1, 1]
pencil = [1, 2, 1, 1, 1]
pencil = [1, 4, 3, 2, 1]
思路有了,接下来,我们就进入具体的编程实现环节。
代码不多,强调3点:
1). 从左到右遍历时,最后一个不用向右比较,所以range()函数中的值是n - 1;
循环语句;
条件语句;
列表;
贪心算法;
这是本次国赛的第4题,本题分值为60分,代码不多,但难度较大。关键点有两个,一是对于贪心思想的理解和运用,二是利用计算思维将复杂问题拆分成两个简单问题,然后注意解决。
贪心思想比较容易想到,也比较好理解,难就难在贪心算法没有固定的模型和结构,需要具体问题具体分析。
分糖果是一个非常经典的案例,著名的LeetCode网站上也有这道题,题号是135,难度级别为困难,有兴趣的也可以去看一看。
你还有什么好的想法和创意吗,也非常欢迎和超平老师分享探讨。
需要源码的,可以添加本人微信。
另外,超平老师创建了一个蓝桥杯备考交流群,这是专门为老师和家长打造的免费社群,您可以与来自全国各地的老师、家长共同交流经验,分享学习心得。
超平老师也会给大家带来及时的赛事动态,备考攻略,真题资源分享,帮助各位更好地备考第15届蓝桥杯赛事,力争取得优异的成绩。
扫码或长按加入微信群