PTA甲级1008【Elevator】思路及代码(c/cpp)

≡放荡痞女 提交于 2020-03-09 15:29:02

题目描述

在这里插入图片描述

题意理解

给出一串乘电梯需求。电梯预设:从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可以节省一部分时间,如果做时间限制很死的题目超时了,可以尝试改一下输入输出方式。

在这里插入图片描述

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!