所在的位置: C++ >> C++市场 >> 20230312蓝桥杯青少组STE

20230312蓝桥杯青少组STE

北京中科医院是怎么样 http://pf.39.net/bdfyy/zjft/161225/5154126.html
题解

编程实现:相邻身高差

时间限制:MS

内存限制:KB

题目描述:

有N(4N)名同学站成一队,已知每名同学的身高(单位:厘米),请比较该队中任意相邻两名同学的身高差(取正值),并输出最大的身高差。

例如:N=8,8名同学的身高分别是、、、、、、、.相邻两名同学的身高差依次是31、24、38、22、2、11、14,其中最大身高差是38.

输入描述

第一行输入一个正整数N(4N),表示站队的同学人数

第二行输入N个正整数(80正整数),表示队列中学生的身高(单位:厘米),相邻两个正整数之间用一个空格隔开

输出描述

输出一个非负整数,表示相邻两名同学中最大身高差。

样例输入

8

样例输出

38

题解一:

首先根据题目描述,可以发现输入中给出了每名同学的身高,并且要求输出相邻两名同学中最大的身高差,因此我们需要先对输入进行处理,得到每个相邻身高差,并找出其中的最大值。

具体实现:

我们可以使用一个数组来存储输入的每个同学的身高,然后用一个循环遍历该数组,对于每个元素,计算其与前一个元素的差值,将差值取绝对值后与当前的最大身高差进行比较,如果大于当前最大身高差,则更新最大身高差。最后输出最大身高差即可。

具体代码如下:

题解代码

#includeiostream

#includecmath

usingnamespacestd;

intmain()

{

intn;

cinn;//输入人数

intheights[n];

for(inti=0;in;i++)

  {

cinheights[i];//输入每个人的身高

}

intmax_diff=0;//最大身高差

for(inti=1;in;i++)

  {

intdiff=abs(heights[i]-heights[i-1]);//计算相邻两名同学的身高差

if(diffmax_diff)

    {

max_diff=diff;//更新最大身高差

}

}

coutmax_diffendl;//输出最大身高差

return0;

}

注意,这里需要使用绝对值函数abs来计算身高差,否则会出现负数。

题解二:

当然,这个题也可以不使用数组,题目要求比较队列中相邻两个同学的身高差,求出最大的身高差。我们可以通过循环遍历整个队列,依次比较相邻两个同学的身高差,找出最大的身高差。

具体实现如下:

1.首先输入第一个同学的身高,将其保存为上一个同学的身高;

2.再输入第二个同学的身高,将其保存为当前同学的身高;

3.从第三个同学开始,依次读入每个同学的身高,与上一个同学的身高相比较,得出身高差;

4.如果当前身高差大于已知的最大身高差,更新最大身高差;

5.将当前同学的身高保存为上一个同学的身高,继续循环遍历;

6.最后输出最大身高差。

需要注意的是,输入身高的过程中需要特别注意第一个同学和第二个同学的身高,因为第一个同学没有前面的同学与之比较,第二个同学没有后面的同学与之比较。同时,在循环中需要不断更新上一个同学和当前同学的身高。

题解代码

#includeiostream

usingnamespacestd;

intmain()

{

intn,max=0;//n表示队列中同学的人数,max表示最大身高差,初始值为0

intl,c;//l表示前一个同学的身高,c表示当前同学的身高

cinnlc;//先输入两个同学的身高

for(inti=3;i=n;i++)//循环读入后面的同学的身高

  {

inth;

cinh;

if(h-cmax)//更新最大身高差

    {

max=h-c;

}

l=c;//更新上一个同学的身高

c=h;//更新当前同学的身高

}

coutmaxendl;//输出最大身高差

return0;

}




转载请注明:http://www.aierlanlan.com/rzdk/5244.html