思路:
题目比较长,总结下就是:
红绿灯是按照:红–绿–黄 依次显示的,倒计时的显示牌显示当前剩余时间。
-
0:路段:直接通过。
-
1:遇到红灯:等待剩余时间后通过。
-
2:遇到黄灯,等待剩余时间后,再等个红灯通过。
-
3:遇到绿灯,无需等待,直接通过。
{:weith=200 height=400}
因此:
- 首先记录下红灯,黄灯,绿灯的持续时间:r, y ,g。
- 用 res 记录总耗时。初始为0。
-
然后读入每个的情况。flag 为状态,time 为时间
0:直接通过,res += time;
1:等待剩余时间后通过,res += time;
2:等待剩余时间后,再等个红灯通过,res =res + time + r;
3:遇到绿灯,无需等待,直接通过。res 不变。
#include <iostream>
using namespace std;
int main()
{
int r, y , g;//记录三种灯的时间
cin >> r >> y >>g;
int res = 0;//总耗时
int T;
cin >> T;
while(T--)
{
int flag, time;//各个情况
cin >> flag >> time;
switch (flag)
{
case 0 ://直接通过
res += time;
continue;
case 1://等待剩余时间后通过
res += time;
continue;
case 2://:等待剩余时间后,再等个红灯通过
res =res + time + r;
continue;
}
}
cout << res;
return 0;
}
求个点赞~
写的真清楚,我这种小白都能看得懂
很赞,很好理解