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就可以计算所有停留时间。

  • 相关阅读:
    「UVA12293」 Box Game
    「CF803C」 Maximal GCD
    「CF525D」Arthur and Walls
    「CF442C」 Artem and Array
    LeetCode lcci 16.03 交点
    LeetCode 1305 两棵二叉搜索树中的所有元素
    LeetCode 1040 移动石子直到连续 II
    LeetCode 664 奇怪的打印机
    iOS UIPageViewController系统方法崩溃修复
    LeetCode 334 递增的三元子序列
  • 原文地址:https://www.cnblogs.com/yuanqingwen/p/10395096.html
Copyright © 2011-2022 走看看