解题思路:

分析条件。

一旦其中一个到达终点,即所走路程大于等于l时,退出循环。时间只记录比赛时间。

分两种情况:

  1. 兔子休息。只有乌龟在跑,在s秒内,循环执行,{sum2+=v2,比赛时间加一}。

  2. 兔子不休息。乌龟和兔子路程都在增加。{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 人评分

  评论区

  • «
  • »