题库首页 › 青少年软件编程(C语言) › 题目 13458

增高垫 网传最大号的增高垫有 16 厘米,可以一下把 1.64 米的男孩变成一米八的大汉,不少对自己身高缺乏自信的男生女生会悄悄买来穿,特别是大家站成一排拍照的时候。 假设准备拍照的一排人中,只要有人看到身边紧挨着的人比自己高,就会忍不住穿增高垫,并且一定要比人家多穿一层。你的任务就是在看过这一排人的身高后,算出谁穿了最多层的增高垫。 时间限制:1000 内存限制:65536 输入 输入首先在第一行给出正整数 n(≤ 104),为一排人的个数。随后一行给出 n 个正整数,表示 n 个人的身高(厘米)。每个数值是不超过 300 的正整数,数字间以空格分隔。 输出 在一行中输出穿了最多层增高垫的人的位置和穿的层数(位序从左到右,从 1 开始)。如果有并列,按从左到右的顺序,每个人的信息占一行。 样例输入 10 150 160 186 200 170 175 180 186 186 183 样例输出 1 3 5 3

正确答案:参考实现(C):从右往左dp,若h[i]<h[i+1]则layer[i]=layer[i+1]+1(被右邻比自己高逼穿)。取最大层数及位置。样例→1 3、5 3。核心:单向递增层数DP。

试卷来源:202503 青少年等级考试C/C++真题三级

本卷相关题目

在线做题 同科目题库