解题思路:
分析条件。
一旦其中一个到达终点,即所走路程大于等于l时,退出循环。时间只记录比赛时间。
分两种情况:
兔子休息。只有乌龟在跑,在s秒内,循环执行,{sum2+=v2,比赛时间加一}。
兔子不休息。乌龟和兔子路程都在增加。{sum1+=v1;sum2+=v2;}
注意事项:
1,特殊讨论:
可能当兔子休息时乌龟到达终点,所以追加条件判断乌龟是否到达终点。(我一开始写的时候没有考虑到,调试了几次才想起来)
2,结果输出讨论:
要先考虑同时到达,否则可能出现同时满足两个条件语句,两次输出。
参考代码:
#include<iostream>
using namespace std;
int main(){
int v1, v2, t, s, l;
cin >> v1 >> v2 >> t >> s >> l;
int c = 0; //比赛计时器
int sum1=0, sum2=0; //1 兔子,2 乌龟
while (sum2 < l && sum1<l) {
if (sum1 - sum2 >= t) {
int m = s;
while (m) {
sum2 += v2;
c++;
m--; //兔子休息倒计时
if (sum2 >= l) break; //讨论兔子休息时乌龟是否到达终点
}
}
else {
sum1 += v1;
sum2 += v2;
c++;
}
}
if (sum2 >= l&&sum1>=l) { //必须先判断同时到达终点
cout << "D" << endl;
}
else if (sum1 >= l) {
cout << "R" << endl;
}
else {
cout<<"T"<<endl;
}
cout << c;
return 0;
}
0.0分
0 人评分
【蟠桃记】 (C语言代码)浏览:651 |
拆分位数 (C语言代码)浏览:1327 |
C语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:1292 |
printf基础练习2 (C语言代码)浏览:741 |
C语言程序设计教程(第三版)课后习题6.10 (C语言代码)浏览:559 |
C语言程序设计教程(第三版)课后习题8.1 (C语言代码)浏览:1256 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:1162 |
C语言程序设计教程(第三版)课后习题7.2 (C语言代码)浏览:798 |
【绝对值排序】 (C语言代码)浏览:821 |
C语言程序设计教程(第三版)课后习题8.4 (C语言代码)浏览:609 |