zoukankan      html  css  js  c++  java
  • 1121 电梯

    题目来源:
    https://acm.zzuli.edu.cn/zzuliacm/problem.php?id=1121
    Description
    在某一高层建筑内只有一部电梯,当你按下一个数时,电梯会运行到那一层。已知电梯每上升一层需6秒,下降一层需4秒,在需要停留的那层停留5秒。现有N个整数组成的一个需求列表,电梯将依次响应,电梯从0层开始运行,而在运行过程结束之前不会返回0层。
    注意,若出现相邻两个整数相等,代表在同一层执行了两个不同任务,可以理解为:电梯已经停了5秒,正要关门时又有人在同一层按开门键,电梯又开门并停留5秒。
    Input
    输入分两行,第一行是一个正整数N(N<=1000),代表停留几次,第二行的N个数字代表这几次依次停留的楼层。
    Output
    输出电梯完成该任务序列所需的时间,单独占一行。
    Sample Input
    3
    2 3 1

    Sample Output
    41
    HINT

    电梯从0层上升到2层运行时间为12秒,停留5秒,再上升第三层,运行时间6秒,停留5秒,再下降到第一层,运行时间8秒,停留5秒。共41秒。
    题意描述:
    输入总的需求次数n及n个需求数(楼层)(n<=1000)
    计算并输出电梯完成该序列所需的时间
    解题思路:
    用数组a存储每一个指令,a[0]=0;比较当前指令和前一个指令的大小,如果大于等于,则判断大于时用上升楼层数乘以6加上5,等于时间加5,如果小于,则下降楼层数乘以4加上5。直到所有指令处理完毕。
    程序代码:

     1 #include<stdio.h>
     2 int main()
     3 {
     4     int n,i,a[1010],l,sum;
     5     while(scanf("%d",&n) != EOF)
     6     {
     7         for(i=1;i<=n;i++)
     8             scanf("%d",&a[i]);
     9             
    10         a[0]=0;
    11         for(sum=0,i=1;i<=n;i++)
    12         {
    13             if(a[i]>=a[i-1])
    14             {
    15                 if(a[i]>a[i-1])
    16                     sum += (a[i]-a[i-1])*6+5; 
    17                 else
    18                     sum += 5;
    19             }
    20             else
    21                 sum += (a[i-1]-a[i])*4+5;
    22         }
    23         printf("%d
    ",sum);
    24     }
    25     return 0;
    26  }
  • 相关阅读:
    关于命题“网络规划中一个VLAN要对应一个网段”的证明
    详谈为何两台主机网络掩码不一致可能导致ping不通
    为什么电脑的ip地址要和网关的ip同一个子网才可以上网?
    快速理解VirtualBox的四种网络连接方式(最详细)
    Ubuntu 16.04下安装OpenStack(juno)之add the compute service报错分析
    Ubuntu 16.04下安装OpenStack(juno) 之add the image service报错分析
    曲线
    Best Cow Fences
    愤怒的牛
    斐波那契数
  • 原文地址:https://www.cnblogs.com/wenzhixin/p/6793157.html
Copyright © 2011-2022 走看看