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

    题目描述 :
    在某一高层建筑内只有一部电梯,当你按下一个数时,电梯会运行到那一层。已知电梯每上升一层需6秒,下降一层需4秒,
    在需要停留的那层停留5秒。现有N个整数组成的一个需求列表,电梯将依次响应,电梯从0层开始运行,而在运行过程结束
    之前不会返回0层。
    注意,若出现相邻两个整数相等,代表在同一层执行了两个不同任务,可以理解为:电梯已经停了5秒,正要关门时又有人
    在同一层按开门键,电梯又开门并停留5秒。
    输入
    输入分两行,第一行是一个正整数N(N<=1000),代表停留几次,第二行的N个数字代表这几次依次停留的楼层。
    输出
    输出电梯完成该任务序列所需的时间,单独占一行。
    解题思路:
    上升一层6秒,下降一层4秒,停留一次五秒。用数组把这几次停留的楼层储存起来,判断每个数与其相邻的后一个数的差值来判断
    上升下降或者停留。
    代码实现:

     1 #include<stdio.h>
     2 #include<math.h>
     3 int main()
     4 {
     5  int N,i,cz,sj=0;
     6  int a[1020];
     7  a[0]=0;
     8  scanf("%d",&N);
     9  for(i=1;i<=N;i++)
    10  scanf("%d",&a[i]);
    11  for(i=1;i<=N;i++)
    12  {
    13  cz=a[i]-a[i-1];
    14  if(cz<0) sj+=(-1)*cz*4;
    15  else if(cz>0) sj+=cz*6;
    16  else sj+=0;
    17  }
    18  printf("%d
    ",sj+N*5);
    19  return 0;
    20  } 


    易错分析:
    1.数组的第一个元素是0,要首先给出来,因为从输入的第一个整数开始就开始计算时间。
    2.前后两个数相同时不需要再另外加时间,因为只要出现一个整数就说明停留一次,最后加上N*5就可以计算所有停留时间。

  • 相关阅读:
    基础技术
    Luogu1438 无聊的数列(线段树)
    树状数组从入门到入土
    左偏树
    PA2014-Final Zarowki(堆)
    BZOJ1455罗马游戏
    【小米oj】 海盗分赃
    【小米oj】 最少交换次数
    【小米oj】 大胃王的烦恼
    【小米oj】 不一样的排序
  • 原文地址:https://www.cnblogs.com/yuanqingwen/p/10395096.html
Copyright © 2011-2022 走看看