1121 电梯

题目来源:
https://acm.zzuli.edu.cn/zzuliacm/problem.php?id=1121
Description
在某一高层建筑内只有一部电梯,当你按下一个数时,电梯会运行到那一层。已知电梯每上升一层需6秒,下降一层需4秒,在需要停留的那层停留5秒。现有N个整数组成的一个需求列表,电梯将依次响应,电梯从0层开始运行,而在运行过程结束之前不会返回0层。
注意,若出现相邻两个整数相等,代表在同一层执行了两个不同任务,可以理解为:电梯已经停了5秒,正要关门时又有人在同一层按开门键,电梯又开门并停留5秒。
Input
输入分两行,第一行是一个正整数N(N<=1000),代表停留几次,第二行的N个数字代表这几次依次停留的楼层。
Output
输出电梯完成该任务序列所需的时间,单独占一行。
Sample Input
3
2 3 1

Sample Output
41
HINT

电梯从0层上升到2层运行时间为12秒,停留5秒,再上升第三层,运行时间6秒,停留5秒,再下降到第一层,运行时间8秒,停留5秒。共41秒。
题意描述:
输入总的需求次数n及n个需求数(楼层)(n<=1000)
计算并输出电梯完成该序列所需的时间
解题思路:
用数组a存储每一个指令,a[0]=0;比较当前指令和前一个指令的大小,如果大于等于,则判断大于时用上升楼层数乘以6加上5,等于时间加5,如果小于,则下降楼层数乘以4加上5。直到所有指令处理完毕。
程序代码:

 1 #include<stdio.h>
 2 int main()
 3 {
 4     int n,i,a[1010],l,sum;
 5     while(scanf("%d",&n) != EOF)
 6     {
 7         for(i=1;i<=n;i++)
 8             scanf("%d",&a[i]);
 9             
10         a[0]=0;
11         for(sum=0,i=1;i<=n;i++)
12         {
13             if(a[i]>=a[i-1])
14             {
15                 if(a[i]>a[i-1])
16                     sum += (a[i]-a[i-1])*6+5; 
17                 else
18                     sum += 5;
19             }
20             else
21                 sum += (a[i-1]-a[i])*4+5;
22         }
23         printf("%d\n",sum);
24     }
25     return 0;
26  }

 

posted @ 2017-05-01 22:15  Reqaw  阅读(318)  评论(0编辑  收藏  举报