【ZZULIOJ】1121:电梯

1121: 电梯

时间限制: 1 Sec  内存限制: 128 MB
提交: 11126  解决: 7637
[状态] [讨论版] [提交] [命题人:admin]

题目描述

在某一高层建筑内只有一部电梯,当你按下一个数时,电梯会运行到那一层。已知电梯每上升一层需6秒,下降一层需4秒,在需要停留的那层停留5秒。现有N个整数组成的一个需求列表,电梯将依次响应,电梯从0层开始运行,而在运行过程结束之前不会返回0层。
注意,若出现相邻两个整数相等,代表在同一层执行了两个不同任务,可以理解为:电梯已经停了5秒,正要关门时又有人在同一层按开门键,电梯又开门并停留5秒。

输入

输入分两行,第一行是一个正整数N(N<=1000),代表停留几次,第二行的N个数字代表这几次依次停留的楼层。

输出

输出电梯完成该任务序列所需的时间,单独占一行。

样例输入 Copy

3 
2 3 1

样例输出 Copy

41

提示

电梯从0层上升到2层运行时间为12秒,停留5秒,再上升第三层,运行时间6秒,停留5秒,再下降到第一层,运行时间8秒,停留5秒。共41秒。

来源/分类

个人思路:根据题目,可知存储在int类型的数组中,用flag来记录电梯每次停留的层数,然后根据每次的层数与之前的层数进行比较来判断,是上升还是下降。

代码如下:

#include<stdio.h>
#include<stdlib.h>
#define N 1000
int main(void){
    int i, j, n, arr[N], sum, up, decline, stay, flag;
    sum = flag = 0;
    up = 6;
    decline = 4;
    stay = 5;
    scanf("%d",&n);
    
    for(i = 0;i < n;i++)
        scanf("%d",&arr[i]);
    
    for(j = 0;j < n;j++){
        if(arr[j] != flag){
            if(arr[j] > flag){
                sum = sum + (arr[j] - flag) * up + stay;
                flag = arr[j];
            }
            else if(arr[j] < flag){
                sum = sum + (flag - arr[j]) * decline + stay;
                flag = arr[j]; 
            }
        }
        else{
            sum = sum + stay;
            flag = arr[j];
        }
    }
    
    printf("%d\n",sum);
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

De_GK

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值