題目敘述
每筆測資第一行有一個正整數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";
}
留言
張貼留言