到哪里治疗白癜风好 https://wapjbk.39.net/yiyuanfengcai/video_bjzkbdfyy/题目:
教室的墙上挂满气球,五颜六色,小朋友们非常喜欢。
刚一下课,小朋友们就打算去抢这些气球。每个气球在墙上都有一定的高度,只有当小朋友跳起来时,手能够到的高度大于等于气球的高度,小朋友才能摘到这个气球。为公平起见,师让跳的低的小朋友先摘,跳的高的小朋友后摘。小朋友都很贪心,每个小朋友在摘气球的时候都会把自己能摘的气球都摘掉。
很巧的是,小朋友们跳起来手能够着的高度都一样,这样就会有跳起来后高度相同的小朋友之间发生争执。
题目概述
样例输入:
样例
样例输出:
3
2
1
解释:对于第一组样输入,摘取气球的顺序依次为1,5,4,2,3号小朋友。1号小朋友能摘1,2,3号气球,5号小朋友能摘4号气球,4号小朋友能摘5,6号气球,2,3号小朋友没有气球可摘。
分析:
这题目,只是看起来有点绕。先定义结构体将小朋友的编号,能够到达的高度,以及拥有气球的数量表示出来:
例
结构体整完之后,再定义一个数组,用来存储气球的高度。设置主函数开始进行编码。输入对应数据之后我们要处理这么几个问题。
要对气球的高度进行排序,这样方便我们处理数据使用sort()方法进行排序2.要对小朋友能够到达的高度进行排序
sort(start,end,cmp)
样例
3.如何判断气球已经被带走,并且知晓小朋友手里有多少气球
样例
n是小学生的数量,while()循环里的stu.ans++代表的是小朋友手上的气球数量,而balloon[index]则表示的是气球的高度。经过事先的排序,小朋友的高度和气球的高度都是从小到大。
一旦while循环符合条件,整个循环都是依照次序进行。小孩到达指定高度,拿球,未到达指定高度,则不拿,for()循环中的i对小孩进行更迭,确保小朋友公平拿球.
index的作用就是确保小球被拿走之后,不会平地再冒出来哈哈哈哈哈哈哈哈哈
完成这些之后,还要进行排序。为啥呢?因为之前是按照小朋友能到达的高度进行排序的,现在要进行排序的是小朋友的编号。因为最终结果是输出对应编号小朋友拿到小球的个数
对应编号排序
还是使用sort()方法排序