美文网首页C语言
郑州轻工业大学oj题解(c语言)1121: 电梯

郑州轻工业大学oj题解(c语言)1121: 电梯

作者: 缘点点 | 来源:发表于2020-01-28 22:34 被阅读0次

话说坚持日更真的好难啊~特别是这段时间其实没什么事干,懒习惯了。。。唉!


  • 题目描述
    在某一高层建筑内只有一部电梯,当你按下一个数时,电梯会运行到那一层。已知电梯每上升一层需6秒,下降一层需4秒,在需要停留的那层停留5秒。现有N个整数组成的一个需求列表,电梯将依次响应,电梯从0层开始运行,而在运行过程结束之前不会返回0层。
    注意,若出现相邻两个整数相等,代表在同一层执行了两个不同任务,可以理解为:电梯已经停了5秒,正要关门时又有人在同一层按开门键,电梯又开门并停留5秒。
  • 输入
    输入分两行,第一行是一个正整数N(N<=1000),代表停留几次,第二行的N个数字代表这几次依次停留的楼层。
  • 输出
    输出电梯完成该任务序列所需的时间,单独占一行。
  • 参考代码:
#include<bits/stdc++.h>
using namespace std;
 
int main()
{
    int a=0,k,N,s=0;
    scanf("%d",&N);
    for(int i=1;i<=N;i++){
        scanf("%d",&k);
        if(k>=a){
            s+=(k-a)*6;// 判断上升,计算上升的楼层数,把楼层数*6得到所花时间
        }
        else if(k<a){
            s+=(a-k)*4;//判断下降,计算下降的楼层数,把楼层数*4得到所花时间
        }
        s+=5;//每次到达后等待5s
        a=k;//把下一次运行前更新为运行后的楼层的楼层
    }
    printf("%d",s);
    return 0;
}
  • 代码解析:
    题目的代码要求难点在于,
  • 每上升一层需6秒,下降一层需4秒。我们需要判断每次行动是上升还是下降。
  • 这里我们每次循环,都把上一次运行后的楼层更新到这一次中,和接下来的楼层做对比就可以知道是上升还是下降,判断后把时间算进总时间即可。
  • 记得每次判断完,也就是到达相应的楼层后要加上等待的5秒。
    其他要点可以看注释。

相关文章

网友评论

    本文标题:郑州轻工业大学oj题解(c语言)1121: 电梯

    本文链接:https://www.haomeiwen.com/subject/sjgethtx.html