![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
问题描述 我们城市最高的建筑只有一部电梯。要求列表由N个正数组成。数字表示电梯将按指定的顺序停在哪个楼层。将电梯向上移动一层需要6秒,向下移动一层需要4秒。电梯将在每层停止时停留5秒钟。对于给定的请求列表,您将计算在列表上完成要求所花费的总时间。电梯在开始时在0楼,并且在满足要求时不必返回到底层。 输入 有多个测试用例。每个案例包含一个正整数N,后跟N个正数。输入中的所有数字都小于100. N = 0的测试用例表示输入结束。此测试用例不进行处理。 输出 在每个测试用例的单行上输出总时间。 样例输入 1 2 3 2 3 1 0 样例输出 17 41
简单的单步模拟一下过程就可以了,直接贴代码。
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
1 #include <iostream> 2 #include <cstdio> 3 4 using namespace std; 5 6 int main() 7 { 8 9 int n; 10 while(~scanf("%d",&n) && n) 11 { 12 int i,last=0,next,time=0; 13 for(i=1;i<=n;i++) 14 { 15 scanf("%d",&next); 16 if (next>last) time+=(next-last)*6; 17 else time+=(last-next)*4; 18 last = next; 19 time+=5; 20 } 21 printf("%d\n",time); 22 } 23 return 0; 24 }
记得要更新所在楼层的状态,以及每一种情况要初始化用时哦。