标签:PAT cur res 复杂度 up Elevator 1008 now goal
1. 问题描述
2. Solution
1、思路分析
题目大意:电梯从0层开始向上,给出该电梯依次按顺序停的楼层数,并且已知上升需要6秒/层,下降需要4秒/层,停下来的话需要停5秒,问走完所有需要停的楼层后总共花了多少时间~
分析:累加计算输出~now表示现在的层数,a表示将要去的层数,当a > now,电梯上升,需要6 * (a – now)秒,当a < now,电梯下降,需要4 * (now – a)秒,每一次需要停5秒,最后输出累加的结果sum~
2、代码实现
// PAT Advance Level 1008
// Ye Qiu
#include <iostream>
#include <cstdio>
using namespace std;
int main() {
#ifdef ONLINE_JUDGE
#else
freopen("input/1008.txt", "r", stdin);
#endif
int up = 6, down = 4, stop = 5, res = 0, cur = 0, goal;
cin >> goal;
while (cin >> goal) {
if (goal > cur) { // up
res += (goal - cur) * up;
} else {
res += (cur - goal) * down;
}
res += stop;
cur = goal;
}
printf("%d", res);
return 0;
}
3、复杂度分析
时间复杂度: O(n)
空间复杂度: O(1)
标签:PAT,cur,res,复杂度,up,Elevator,1008,now,goal 来源: https://www.cnblogs.com/junstat/p/16193195.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。