【题目来源】
https://www.acwing.com/problem/content/1482/
【题目描述】
我们城市的最高建筑上只有一部电梯。
给定一个由 N 个整数组成的请求列表。
我们要按照列表指定的顺序,将电梯依次停到各个楼层。
已知,电梯上行一层需要 6 秒,下行一层需要 4 秒,每个停留楼层每次停留 5 秒。
请你求出,将列表给出的所有楼层都按指定顺序完成停留共需多少秒。
电梯开始时位于第 0 层,所有楼层均停留完毕后,电梯不用回归原位置。
注意:可能存在连续在同一楼层停留多次的情况,此时每停留一次就要等待5秒钟。
【输入格式】
共一行,首先包含一个整数 N,然后包含 N 个正数(表示楼层)。
【输出格式】
输出一个整数,表示所花费的总时间。
【数据范围】
1≤N≤100,
列表中的数字不会超过 100。
【输入样例】
3 2 3 1
【输出样例】
41
【算法分析】
● 设用数组 q[] 表示楼层,由于电梯开始时位于第 0 层,故可将数组 q[] 下标从 1 开始。则计算时只需比较 q[i] 与 q[i - 1] 的关系即可。
【算法代码】
- #include
- using namespace std;
-
- const int maxn=1e2+5;
- int q[maxn];
- int ans;
-
- int main() {
- int n;
- cin>>n;
- for(int i=1; i<=n; i++) cin>>q[i];
-
- for(int i=1; i<=n; i++) {
- if(q[i]>q[i-1]) ans+=(q[i]-q[i-1])*6+5;
- else ans+=(q[i-1]-q[i])*4+5;
- }
- cout<
-
- return 0;
- }
-
- /*
- in:
- 3 2 3 1
- out:
- 41
- */
【参考文献】
https://www.acwing.com/solution/content/190564/
https://www.acwing.com/solution/content/11184/