结题思路:首先要根据题目要求,模拟比赛,每秒钟给兔子和乌龟增加相应的路程,在这里我选用while做死循环,留好相应的退出条件,在循环中,做出相应的判断,及兔子睡觉时乌龟的前进路程。最后根据相应的结果,按照格式输出。
解题难点:如何判断循环出口,即获得冠军的种种情况,我们要分多条线去思考,可能会是在兔子没有睡觉得情况下比赛结束,有可能是在兔子的睡梦中结束了比赛。根据不同的情况,留好相应的出口。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanf = new Scanner(System.in);
int v1 = scanf.nextInt(); //兔子的速度
int v2 = scanf.nextInt(); //乌龟的速度
int t = scanf.nextInt(); //兔子领先距离设定
int s = scanf.nextInt(); //兔子休息时间设定
int l = scanf.nextInt(); //比赛总路程设定
int Rl = 0; //比赛结束兔子路程
int Tl = 0; //比赛结束乌龟路程
int time = 0; //比赛总用时
boolean flag = false;
while(true) { //做死循环假设比赛不间断的进行
time++;
Rl += v1;
Tl += v2;
if(Rl >= l || Tl >= l) //判断正常情况下退出条件
break;
if(Rl-Tl >= t) { //处理兔子睡觉时发生的情况
for(int i = 0 ;i < s;i++) {
Tl += v2;
time++;
if(Tl >= l) { //如果睡觉期间乌龟已到达终点的情况
flag = true;
break;
}
}
if(flag)
break;
}
}
if(Rl < Tl) //根据结果输出相应的信息
System.out.println("T");
else if(Rl == Tl)
System.out.println("D");
else
System.out.println("R");
System.out.print(time);
}
}