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循环即可!!
坑坑坑!!
- 本来对题目的理解是从第0层到输入的第一个数,但是这样算后发现竟然是56!不是41!
后来才发现,人家的意思是(我表述不清,请自行理解,反正是从第2个数开始算)!!!
所以,要在while循环外面先写一个cin<<!!!
(PS:Sample对于题目的理解也很重要啊)