题目描述
在某一高层建筑内只有一部电梯,当你按下一个数时,电梯会运行到那一层。已知电梯每上升一层需6秒,下降一层需4秒,在需要停留的那层停留5秒。现有N个整数组成的一个需求列表,电梯将依次响应,电梯从0层开始运行,而在运行过程结束之前不会返回0层。
注意,若出现相邻两个整数相等,代表在同一层执行了两个不同任务,可以理解为:电梯已经停了5秒,正要关门时又有人在同一层按开门键,电梯又开门并停留5秒。
输入
输入分两行,第一行是一个正整数N(N<=1000),代表停留几次,第二行的N个数字代表这几次依次停留的楼层。
输出
输出电梯完成该任务序列所需的时间,单独占一行。
样例输入 Copy
3 2 3 1
样例输出 Copy
41
提示
电梯从0层上升到2层运行时间为12秒,停留5秒,再上升第三层,运行时间6秒,停留5秒,再下降到第一层,运行时间8秒,停留5秒。共41秒。
思路 :最初开始是从0层开始的,所以数组 a【0】=0,从a【1】开始输入,每停留1次是5秒,上一层是6秒,下一层是4秒。所以 time = 停留次数*5 + 上了几层*6 + 下了几层*4;
代码:
#include<iostream>
using namespace std;
int a[1001];//开辟数组a[]的空间
int main()
{
a[0] = 0;
int n = 0, num = 0, t = 0;
cin>>n;//键盘输入n
for (int i = 1;i <= n;i++)
{
cin >> a[i];
}
t += n * 5;
for (int i = 0;i < n;i++)
{
if (a[i] < a[i + 1])//上楼时间
{
t += (a[i + 1] - a[i]) * 6;
}
else if (a[i] > a[i + 1])//下楼时间
{
t += (a[i] - a[i + 1]) * 4;
}
}
cout << t<< endl;
return 0;//程序正常结束
}