题目粗心:
有一部电梯,最开始停在第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;
}
发表回复