电梯 HDU – 1008
我们城市最高的建筑只有一部电梯。请求列表由N个正数组成。数字表示电梯将以指定顺序停在哪些楼层。将电梯向上移动一层需要6秒钟,向下移动一层楼需要4秒钟。电梯将在每个站点停留5秒钟。
对于给定的请求列表,您将计算在列表上完成请求所花费的总时间。电梯在开始时位于0楼,并且在满足要求时不必返回到底层。
输入有多个测试用例。每个案例包含一个正整数N,后跟N个正数。输入中的所有数字都小于100. N = 0的测试用例表示输入结束。不处理此测试用例。
产量为每个测试用例打印一行的总时间。
样本输入
1 2
3 2 3 1
0
样本输出
17 41
模拟法的应用
#include<stdio.h>
int main(){
int n;
int i;
int time = 0;
while(scanf("%d",&n)&&n!=0)
{
int a;//上升到的楼层
int nowstay = 0;//从第0层开始
int m;
scanf("%d",&m);//第一个要到达的楼层
time = m * 6 + n * 5;//顺便把所有楼层的停留时间都计算了
nowstay = m;
for(i=1;i<n;i++)
{
scanf("%d",&a);
time += (a-nowstay)>0 ?(a-nowstay)*6 :(nowstay-a)*4;
nowstay=a;
}
printf("%d\n",time);
}
return 0;
}