美文网首页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