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 }