1

题目大意:

有一部电梯,最开始停在第0层,上一层楼需要6s,下二层楼需要4s, 每次到达当前目的楼层还需要停留5s。现给出电梯要去的楼层的顺序,求总共需要花费多少时间(最后不需要回到第0层)。

算法思路:

使用beginFloor记录当前电梯所在的位置,nextFloor记录下一次要去的位置,没输入一个nextFloor,如果大于beginFloor就代表上楼,让seconds累计上楼时间6*(nextFloor-beginFloor),否则就是下楼,累计下楼时间4*(beginFloor-nextFloor),然后得记录停留5秒的时间,更新此时电梯所在的位置。在输入结束的时候就可以输出数据。

提交结果:

image.png

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;
}

乔梓鑫
569 声望17 粉丝

主要分享个人学习经验和心得