ZZULIOJ题解
1121: 电梯
题目描述
在某一高层建筑内只有一部电梯,当你按下一个数时,电梯会运行到那一层。已知电梯每上升一层需6秒,下降一层需4秒,在需要停留的那层停留5秒。现有N个整数组成的一个需求列表,电梯将依次响应,电梯从0层开始运行,而在运行过程结束之前不会返回0层。
注意,若出现相邻两个整数相等,代表在同一层执行了两个不同任务,可以理解为:电梯已经停了5秒,正要关门时又有人在同一层按开门键,电梯又开门并停留5秒。
输入
输入分两行,第一行是一个正整数N(N<=1000),代表停留几次,第二行的N个数字代表这几次依次停留的楼层。
输出
输出电梯完成该任务序列所需的时间,单独占一行。
样例输入
3
2 3 1
样例输出
41
本题的难度并不算大,考察一个对问题的分析,模拟就可以了。只需要分析上楼用时加上停留用时,这些时间上的分配。即可解决问题。
代码
#include<stdio.h>
int sum=0,a[1001],n;
//定义时间总数sum,数组a存停留的楼层号,以及停留次数n
int main()
{
scanf("%d",&n);//输入停留的次数
for(int i=1;i<=n;i++)//输入停留的楼层号
{
scanf("%d",&a[i]);
}
sum+=5*n;//每次停留要待在该层五秒
for(int i=0;i<n;i++)//开始对上下楼进行模拟
{
if(a[i]>a[i+1])//下楼每层是四秒
sum+=4*(a[i]-a[i+1]);
if(a[i+1]>a[i])//上楼每层是六秒
sum+=6*(a[i+1]-a[i]);
}
printf("%d",sum);
}