PAT

1008 Elevator

2020-04-10  本文已影响0人  胖胖的熊管家

题目

给定一组要停的楼层号序列。
电梯每上一层花费6秒;每下一层花费4秒;每停一次花费5秒。
电梯从第0层开始,结束后也不必回到0层。

Sample Input
3 2 3 1
Sample Output
41

解法

法一:C++
思路:

用一个current代表当前在哪层,输入的数a表示目标到那层,然后用if条件判断是上升还是下降,再做个简单数学运算即可。

源代码:
#include <iostream>
#include <cstdio>
#include <math.h>
#include<vector>
#include <string.h>
#include <sstream>

using namespace std;

int main() {
    int a;
    int current = 0,sum = 0;
    cin>>a;
    while (cin>>a) {
        if(a > current){ //上升楼层
            sum += (a-current)*6+5;
            current = a;
        }
        else{//下降楼层
            sum += (current-a)*4+5;
            current = a;
        }
    }
    cout<<sum<<endl;
    return 0;
}

知识点+坑:

1.学到了怎么输入一行的输入值

用while循环即可!!

坑坑坑!!

  1. 本来对题目的理解是从第0层到输入的第一个数,但是这样算后发现竟然是56!不是41!
    后来才发现,人家的意思是(我表述不清,请自行理解,反正是从第2个数开始算)!!!
    所以,要在while循环外面先写一个cin<<!!!


(PS:Sample对于题目的理解也很重要啊)

上一篇下一篇

猜你喜欢

热点阅读