解题思路:

分析条件。

一旦其中一个到达终点,即所走路程大于等于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分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论