ZeroJudge G497: 電梯 (Elevator)

小明工作的大樓只有一部電梯,上下班期間常常因人潮而需排隊久候。早上他因為怕遲到,總是選擇走樓梯以節省時間。

有一天小明在報導中發現,電梯上升一層樓耗電 3 度,下降一層耗電 2 度電,看到電梯如此龐大的耗電量,愛地球的小明決定以後都開始走樓梯。

小明心裡計算著,電梯每天從一樓開始運作,一天上上下下那麼多次,到底電梯一天的耗電量是多少,請你幫他寫一支程式計算。

範例測資

範例輸入範例輸出
輸入第一行為一個整數 N (2 ≤ N ≤ 5000) 代表一天中電梯的升降次數
第二行有 N 個正整數 Xi (1 ≤ Xi ≤ 1000,1 ≤ i ≤ N) 表示電梯停留的樓層。
輸出一行表示電梯一天升降的耗電量。
4
4 5 6 7
18
7
8 4 5 2 10 4 6
80
8
21 19 17 15 13 11 9 7
88

解題思路

可以先宣告一個電梯目前位置的變數,預設為 1,每一次收到樓層資料的時候跟目前位置做比較,如果電梯在往上的話就是答案 += 新的樓層 – 目前樓層再乘 3,如果是往下就是答案 += 目前樓層-新樓層再乘 2,當然也可以使用 abs 直接做一模一樣的減法。

範例程式碼-ZeroJudge G497: 電梯 (Elevator)

#include <iostream>
using namespace std;

int main() {
    cin.sync_with_stdio(0);
    cin.tie(0);
    int N, pos = 1, ans = 0;
    cin >> N;
    for (int i = 0; i<N; i++)
    {
        int tmp;
        cin >> tmp;
        if (tmp > pos)
        {
            ans += (tmp-pos) * 3;
            pos = tmp;
        }
        else
        {
            ans += (pos-tmp) * 2;
            pos = tmp;
        }
    }
    cout << ans << "\n";
}

//ZeroJudge G497
//Dr. SeanXD

發佈留言