乐趣区

关于算法-数据结构:PAT甲级1008-Elevator

题目粗心:

有一部电梯,最开始停在第 0 层,上一层楼须要 6s,下二层楼须要 4s, 每次达到以后目标楼层还须要停留 5s。现给出电梯要去的楼层的程序,求总共须要破费多少工夫(最初不须要回到第 0 层)。

算法思路:

应用 beginFloor 记录以后电梯所在的地位,nextFloor记录下一次要去的地位,没输出一个 nextFloor,如果大于beginFloor 就代表上楼,让 seconds 累计上楼工夫6*(nextFloor-beginFloor),否则就是下楼,累计下楼工夫4*(beginFloor-nextFloor),而后得记录停留 5 秒的工夫,更新此时电梯所在的地位。在输出完结的时候就能够输入数据。

提交后果:

AC 代码:

#include <cstdio>

using namespace std;

int main(){
    int N;
    scanf("%d",&N);
    int beginFloor = 0;// 以后电梯所在的地位
    int nextFloor;
    int seconds = 0;// 所破费的工夫
    for (int i = 0; i < N; ++i) {scanf("%d",&nextFloor);
        if(nextFloor>beginFloor){
            // 上楼
            seconds += 6*(nextFloor-beginFloor);
        } else {
            // 下楼
            seconds += 4*(beginFloor-nextFloor);
        }
        // 停留 5 秒
        seconds += 5;
        // 更新电梯地位
        beginFloor = nextFloor;
    }
    printf("%d",seconds);
    return 0;
}
退出移动版