zzuli oj 1121 电梯

题目描述 :
在某一高层建筑内只有一部电梯,当你按下一个数时,电梯会运行到那一层。已知电梯每上升一层需6秒,下降一层需4秒,
在需要停留的那层停留5秒。现有N个整数组成的一个需求列表,电梯将依次响应,电梯从0层开始运行,而在运行过程结束
之前不会返回0层。
注意,若出现相邻两个整数相等,代表在同一层执行了两个不同任务,可以理解为:电梯已经停了5秒,正要关门时又有人
在同一层按开门键,电梯又开门并停留5秒。
输入
输入分两行,第一行是一个正整数N(N<=1000),代表停留几次,第二行的N个数字代表这几次依次停留的楼层。
输出
输出电梯完成该任务序列所需的时间,单独占一行。
解题思路:
上升一层6秒,下降一层4秒,停留一次五秒。用数组把这几次停留的楼层储存起来,判断每个数与其相邻的后一个数的差值来判断
上升下降或者停留。
代码实现:

 1 #include<stdio.h>
 2 #include<math.h>
 3 int main()
 4 {
 5  int N,i,cz,sj=0;
 6  int a[1020];
 7  a[0]=0;
 8  scanf("%d",&N);
 9  for(i=1;i<=N;i++)
10  scanf("%d",&a[i]);
11  for(i=1;i<=N;i++)
12  {
13  cz=a[i]-a[i-1];
14  if(cz<0) sj+=(-1)*cz*4;
15  else if(cz>0) sj+=cz*6;
16  else sj+=0;
17  }
18  printf("%d\n",sj+N*5);
19  return 0;
20  } 

 


易错分析:
1.数组的第一个元素是0,要首先给出来,因为从输入的第一个整数开始就开始计算时间。
2.前后两个数相同时不需要再另外加时间,因为只要出现一个整数就说明停留一次,最后加上N*5就可以计算所有停留时间。

posted @ 2019-02-18 13:31  沅清的小窝  阅读(414)  评论(0编辑  收藏  举报