这个题目是要计算电梯的运行时间,输入的正整数是表示所要停在的楼层数。刚开始电梯在第0层,电梯向上运行一层的时间为6秒,向下运行一层的时间为4秒。停靠在所要停留的楼层时间为5秒。该题目是简单题,主要在于判断电梯的位置和所要到达的楼层数之间的关系。我的AC代码如下,关于运用的方法,都在代码的注释里面。
#include <iostream>
using namespace std;
int main()
{
int N,begin=0,total_time=0;
int*input_num;
while(cin>>N&&N)
{
//为输入的数据分配空间
input_num=new int[N];
for(int i=0; i<N; i++)
{
//存储数据
cin>>input_num[i];
}
//计算电梯运行时间,begin为电梯每次运行的起点
for(int j=0; j<N; j++)
{
//没到所在楼层就执行while循环
while(begin!=input_num[j])
{
//如果起点比所要停的层数小,则向上运行,向上运行一层后起点+1变为新的起点
if(begin<input_num[j])
{
total_time+=6;
begin=begin+1;
}
else if(begin>input_num[j])
{
//向下运行,起点减一变为新的起点
total_time+=4;
begin=begin-1;
}
}
//到达所到的楼层,停5秒
total_time+=5;
}
cout << total_time << endl;
//重新初始化,正确进入下一个例子
total_time=0;
begin=0;
}
return 0;
}