题目描述:在某一高层建筑内只有一部电梯,当你按下一个数时,电梯会运行到那一层。已知电梯每上升一层需6秒,下降一层需4秒,在需要停留的那层停留5秒。现有N个整数组成的一个需求列表,电梯将依次响应,电梯从0层开始运行,而在运行过程结束之前不会返回0层。
注意,若出现相邻两个整数相等,代表在同一层执行了两个不同任务,可以理解为:电梯已经停了5秒,正要关门时又有人在同一层按开门键,电梯又开门并停留5秒。
输入:输入分两行,第一行是一个正整数N(N<=1000),代表停留几次,第二行的N个数字代表这几次依次停留的楼层。
输出:输出电梯完成该任务序列所需的时间,单独占一行。
样例输入
3
2 3 1
样例输出
41
提示:电梯从0层上升到2层运行时间为12秒,停留5秒,再上升第三层,运行时间6秒,停留5秒,再下降到第一层,运行时间8秒,停留5秒。共41秒。
代码:
#include <stdio.h>
int main(){
int N,sum=0,i,f,pf=0,num; //sum记录总时间;pf为当前所在楼层(从0层开始,初始化为0);f为将要到达楼层;num记录移动楼层数,其符号用来判定上下方向
while(scanf("%d",&N),N>1000);
sum=N*5; //停留几次有几个五秒
for(i=1;i<=N;i++){
scanf("%d",&f);
num=f-pf;
if(num>0){
sum+=num*6;
}
if(num<0){
sum-=num*4;
}
pf=f;
这篇博客介绍了一个关于电梯运行时间计算的问题,给定一个包含N个整数的需求列表,电梯会按照顺序到达每一层,上升一层需6秒,下降一层需4秒,每层停留5秒。如果相邻楼层相同,电梯会额外停留5秒。博客提供了一个样例输入输出,并邀请读者批评指正代码解决方案。
订阅专栏 解锁全文
2947

被折叠的 条评论
为什么被折叠?



