解题思路:模拟龟兔赛跑过程即可
注意事项:注意比赛过程逻辑就行了
参考代码:
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int v1 = sc.nextInt(), v2 = sc.nextInt(), t = sc.nextInt(), s = sc.nextInt(), l = sc.nextInt();
sc.close();
R rabbit = new R(v1, t, s);
T tortoise = new T(v2);
int time = 0;
while (true) {
rabbit.run();
tortoise.run();
time++;
if (rabbit.sum >= l) {
// 如果兔子跑到了终点
if (tortoise.sum >= l) {
// 乌龟也跑到了终点,就平局
System.out.println("D");
System.out.println(time);
break;
} else {
// 否则兔子赢
System.out.println("R");
System.out.println(time);
break;
}
} else if (tortoise.sum >= l) {
// 兔子没到终点,但乌龟到了,就乌龟赢
System.out.println("T");
System.out.println(time);
break;
}
// 每跑一秒,兔子检测是否要睡觉一次
rabbit.lazy(tortoise.sum);
}
}
}
//兔子对象
class R {
public int sum;
public int t;
public int s;
public int v;
public boolean isSleep;
public int sleetTime;
R(int v, int t, int s) {
this.v = v;
this.t = t;
this.s = s;
this.isSleep = false;
this.sleetTime = 0;
}
public void lazy(int rabbit_sum) {
// 如果自己比乌龟跑的多到一定程度,就睡觉
if (this.sum - rabbit_sum >= this.t) {
if (!this.isSleep) {
// 并且此时没有在睡觉,就睡觉
this.sleetTime = this.s;
this.isSleep = true;
}
}
}
public void run() {
if (this.isSleep) {
this.sleetTime -= 1;
if (this.sleetTime <= 0)
this.isSleep = false;
} else {
this.sum += this.v;
}
}
}
//乌龟对象
class T {
public int sum;
public int v;
T(int v) {
this.v = v;
}
public void run() {
this.sum += this.v;
}
}
0.0分
0 人评分
C语言程序设计教程(第三版)课后习题7.5 (C语言代码)浏览:670 |
高精度加法 (C++代码)(大数加法)浏览:1008 |
C二级辅导-统计字符 (C语言代码)浏览:528 |
分糖果 (C++代码)浏览:1537 |
C语言程序设计教程(第三版)课后习题4.9 (C语言代码)浏览:634 |
【排队买票】 (C语言代码)浏览:944 |
WU-格式化数据输出 (C++代码)浏览:1312 |
WU-整除问题 (C++代码)浏览:648 |
C语言程序设计教程(第三版)课后习题6.3 (C语言代码)浏览:687 |
用筛法求之N内的素数。 (C语言代码)浏览:685 |