1416电梯升降

描述

某城市最高的建筑只有一部电梯。一份电梯升降任务表由N个正整数组成,这些数字表示电梯按照给定的顺序停留的楼层号。
电梯升一层花费6秒钟,降一层花费4秒钟,并且每次停留花费5秒钟。
对于每一份任务表,你要计算出完成全部升降任务所花费的总时间。一开始,电梯在第0层,并且最终完成任务时电梯不必一定返回到0层。

 

输入

输入一个正整数N,接下来是N个正整数。
在输入中,所有的数字都小于100。

 

输出

输出总时间。

 

输入样例 1 

1 2

输出样例 1

17


输入样例 2 

3 2 3 1

输出样例 2

41

先定义一个变量n,用来输入要搭几次电梯。然后写一个for循环来循环输入要去的楼层。
第一次从0层出发,所以肯定是往上,i==1时不判断往上还是往下,直接用累加器s加上输入的a*6。
这里要注意每次循环的末尾要用b保存这一次输入的层数,下一次循环时用来做比较。
第二次以及以后就需要先判断输入的a比上一次的b大还是小,大则s+=(a-b)*6,小则s+=(b-a)*4。


代码:
 1 #include<bits/stdc++.h>
 2 #include<iomanip>
 3 using namespace std;
 4 int main()
 5 {
 6     int n,s=0,a,b;
 7     cin>>n;
 8     s+=n*5;
 9     for(int i=1;i<=n;i++)
10     {
11         cin>>a;
12         if(i==1) 
13         {
14             s+=a*6;
15         }
16         if(a>b&&i!=1)
17         {
18             s+=(a-b)*6;
19         }
20         if(a<b&&i!=1)
21         {
22             s+=(b-a)*4;
23         }
24         b=a;
25     }
26     cout<<s;
27     return 0;
28 }

 

posted @ 2021-01-01 15:07  knbit  阅读(470)  评论(0编辑  收藏  举报