1416電梯升降

knbit發表於2021-01-01

描述

某城市最高的建築只有一部電梯。一份電梯升降任務表由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 }

 

相關文章