关于算法-数据结构: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;
}

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理