题目描述
题意理解
给出一串乘电梯需求。电梯预设:从0th开始,每上一层需要6秒,下一层需要4秒,需求给出的stop停留5秒。
比较容易产生歧义的地方是,如果出现类似3 2 3 3这样的输入样例,两次三楼都需要停5秒还是只需要停留一次就可以。最后代码试了一下,是需要出现几次就停留几次的,不论是不是连着同一楼层有request。
代码及提交结果(c/cpp)
c和cpp在这题上没什么区别,就是个头文件问题而已,没有用上cpp的函数。
#include <stdio.h>
int main() {
int n;
scanf("%d", &n);
int index = 0, now, ans = 0, i;
for(i = 0; i < n; i++) {
scanf("%d", &now);
if(now > index) ans += (now-index)*6;
if(now < index) ans += (index-now)*4;
ans += 5;
index = now;
}
printf("%d", ans);
return 0;
}
index初始化为零代表电梯初始时刻,now输入需求,根据大小判断上升还是下降,每层stop停五秒,最后更新电梯当前层数index
#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
scanf("%d", &n);
int index = 0, now, ans = 0;
for(int i = 0; i < n; i++) {
scanf("%d", &now);
if(now > index) ans += (now-index)*6;
if(now < index) ans += (index-now)*4;
ans += 5;
index = now;
}
printf("%d", ans);
return 0;
}
cpp中用scanf和printf代替cin和cout可以节省一部分时间,如果做时间限制很死的题目超时了,可以尝试改一下输入输出方式。
来源:CSDN
作者:邓等灯
链接:https://blog.csdn.net/qq_39625459/article/details/104750144