ZeroJudge G497: 電梯 (Elevator)

題目敘述

每筆測資第一行有一個正整數N,第二行會有N個正整數代表電梯每次抵達的樓層,電梯最一開始會在第一層樓 (不包含在測資中)。電梯往上一層樓需要花3度的電,往下一層樓需要花2度的電。要求輸出總共需要花費多少度的電。


範例輸入 #1

4

4 5 6 7

範例輸出 #1

18


範例輸入 #2

7

8 4 5 2 10 4 6

範例輸出 #2

80


範例輸入 #3

8

21 19 17 15 13 11 9 7

範例輸出 #3

88


解題思路

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

解題程式碼如下 (僅供參考):

#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";
}

留言