一、题目
二、解题
1.题目
循环输入每个路口的状态,然后根据不同的状态计算小明上学所需的时间。
具体来说,当输入一个路口时,程序会判断这个路口是道路、红灯、黄灯还是绿灯。如果是道路或红灯,则直接加上通过时间或剩余等待时间;如果是黄灯,则加上剩余等待时间和红灯时间;如果是绿灯,则不用等待,继续循环。最后输出总时间。
2.代码
dev c++ 5.11
#include<iostream>
using namespace std;
int main(){
int r,y,g,n;
cin>>r>>y>>g;
cin>>n;
int ans=0;
while(n--){
int k,t;
cin>>k>>t;
if(!k) ans+=t;
else if(k==1) ans+=t;
else if(k==2) ans+=(r+t);
else continue;
}
cout<<ans;
return 0;
}
3.提交结果
总结
1.解释
这段代码的时间复杂度为 O(n),其中 n 为路口数量。因为程序中有一个 while 循环,循环次数为路口数量,所以时间复杂度与路口数量成正比。
空间复杂度为 O(1)。程序中只使用了常数个变量,所以空间复杂度为常数。