杭电HDU 1008 简单模拟AC代码

题目大意:多组测试数据,每组测试数据给出电梯的任务停留列表,计算电梯完成任务的时间。电梯每上一层花费6秒,下一层花费4秒,停留一层花费5秒,电梯刚开始在0层。

这道题属于简单模拟,给定任务列表求时间,基本没有坑点,唯一要注意的地方任务列表如果出现两个连续且相同的楼层,那么停留时间也是要不停累加的,比如输入 3 0 0 0 那么应该输出15。不会因为楼层一样而跳过。

一开始用的队列,完全没必要,还不如小白方法简单~

代码比较短,还算好理解吧,下面放C++的AC代码:
(PS:渣渣的第3贴,欢迎纠错/提意见)


#include<iostream>
using namespace std;
int main()
{
    int N;
    while (~scanf("%d", &N) && N)
    {
        //state:电梯所在楼层  time:所用时间 都初始化为0  next:目标楼层 
        int  next, state = 0, time = 0;
        while (N--)
        {
            scanf("%d", &next);
            if (next > state)//上楼
                time += (next - state) * 6 + 5;
            else if (next < state) //下楼
                time += (state - next) * 4 + 5;
            else time += 5;
            state = next;//更新状态
            }
        printf("%d\n", time);
    }
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值