其他分享
首页 > 其他分享> > PAT Advanced Level 1008 Elevator

PAT Advanced Level 1008 Elevator

作者:互联网

原题传送门

1. 问题描述

2. Solution

1、思路分析
题目大意:电梯从0层开始向上,给出该电梯依次按顺序停的楼层数,并且已知上升需要6秒/层,下降需要4秒/层,停下来的话需要停5秒,问走完所有需要停的楼层后总共花了多少时间~

分析:累加计算输出~now表示现在的层数,a表示将要去的层数,当a > now,电梯上升,需要6 * (a – now)秒,当a < now,电梯下降,需要4 * (now – a)秒,每一次需要停5秒,最后输出累加的结果sum~
2、代码实现

// PAT Advance Level 1008
// Ye Qiu
#include <iostream>
#include <cstdio>

using namespace std;

int main() {
#ifdef ONLINE_JUDGE
#else
    freopen("input/1008.txt", "r", stdin);
#endif
    int up = 6, down = 4, stop = 5, res = 0, cur = 0, goal;
    cin >> goal;
    while (cin >> goal) {
        if (goal > cur) {  // up
            res += (goal - cur) * up;
        } else {
            res += (cur - goal) * down;
        }
        res += stop;
        cur = goal;
    }
    printf("%d", res);
    return 0;
}

3、复杂度分析
时间复杂度: O(n)
空间复杂度: O(1)

标签:PAT,cur,res,复杂度,up,Elevator,1008,now,goal
来源: https://www.cnblogs.com/junstat/p/16193195.html