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