题目大意:
有一部电梯,最开始停在第0层,上一层楼需要6s,下二层楼需要4s, 每次到达当前目的楼层还需要停留5s。现给出电梯要去的楼层的顺序,求总共需要花费多少时间(最后不需要回到第0层)。
算法思路:
使用beginFloor
记录当前电梯所在的位置,nextFloor
记录下一次要去的位置,没输入一个nextFloor
,如果大于beginFloor
就代表上楼,让seconds
累计上楼时间6*(nextFloor-beginFloor)
,否则就是下楼,累计下楼时间4*(beginFloor-nextFloor)
,然后得记录停留5秒的时间,更新此时电梯所在的位置。在输入结束的时候就可以输出数据。
提交结果:
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;
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。