Java 如何解决龟赛跑
有一个问题叫做:乌龟赛跑 问题是: 两只名为A和B的乌龟必须参加一场比赛。A开始时的平均速度为每小时720英尺。年轻的B知道她跑得比A快,而且还没有吃完卷心菜 当她开始时,最后,她可以看到A领先70英尺,但B的速度是每小时850英尺。B要多久才能赶上A 更一般地说:给定两种速度v1a的速度,integer>0和v2b的速度,integer>0和lead g integer>0,B捕捉A需要多长时间 结果将是一个数组[hour,min,sec],它是所需的时间,以小时、分钟和秒为单位,四舍五入到最接近的秒或某些语言中的字符串 如果v1>=v2,则返回nil、nothing、null、None或{-1、-1、-1} C++,C,GO,Nim,[]为Kotlin或-1 - 1 - 1。< /P> 示例: 结果的形式取决于语言 赛车手720、850、70=>[0、32、18]或0 32 18 race80,91,37=>[3,21,49]或32149 我试着这样解决它:Java 如何解决龟赛跑,java,Java,有一个问题叫做:乌龟赛跑 问题是: 两只名为A和B的乌龟必须参加一场比赛。A开始时的平均速度为每小时720英尺。年轻的B知道她跑得比A快,而且还没有吃完卷心菜 当她开始时,最后,她可以看到A领先70英尺,但B的速度是每小时850英尺。B要多久才能赶上A 更一般地说:给定两种速度v1a的速度,integer>0和v2b的速度,integer>0和lead g integer>0,B捕捉A需要多长时间 结果将是一个数组[hour,min,sec],它是所需的时间,以小时、分钟和秒为单位,四舍五入到最
public static int[] race(int v1, int v2, int g) {
int v3 = v2 - v1;
double time = (double )g / (double)v3;
int result[] = new int[3];
if (v2 > v1) {
if (time > 1) {
while (time > 10) {
time /= 10;
}
result[0] = (int) time;
result[1] = (int) ((time - result[0]) * 60);
result[2] = (int) ((((time - result[0]) * 60) - result[1]) * 60);
System.out.print(result[0] + " " + result[1] + " " + result[2]);
} else {
result[0] = 0;
result[1] = (int) (time * 60);
result[2] = (int) (((time * 60) - result[1]) * 60);
System.out.print(result[0] + " " + result[1] + " " + result[2]);
}
}
else {
return null;
}
return result;
}
但是它在测试用例中总是失败,您能帮我吗?检查下面的代码:
public class Tortoise {
public static int[] race(int v1, int v2, int g) {
if (v1 >= v2)
return null;
int seconds = (g * 3600) / (v2 - v1);
return new int[]{seconds / 3600, (seconds % 3600) / 60, seconds % 60};
}
public static void main(String[] args) {
Tortoise.race(720, 850, 70);
}
}
检查以下代码:
public class Tortoise {
public static int[] race(int v1, int v2, int g) {
if (v1 >= v2)
return null;
int seconds = (g * 3600) / (v2 - v1);
return new int[]{seconds / 3600, (seconds % 3600) / 60, seconds % 60};
}
public static void main(String[] args) {
Tortoise.race(720, 850, 70);
}
}
也许你可以试试下面的代码
public static int[] race(int v1, int v2, int g){
if(v1 >= v2)
return null; //B will never catch A
int speedDifference = (v2 - v1);
int resultInSeconds = g * 3600 / speedDifference; //*3600 to get in seconds
int[] result = {resultInSeconds/3600, resultInSeconds%3600/60, resultInSeconds%3600%60};
return result;
}
也许你可以试试下面的代码
public static int[] race(int v1, int v2, int g){
if(v1 >= v2)
return null; //B will never catch A
int speedDifference = (v2 - v1);
int resultInSeconds = g * 3600 / speedDifference; //*3600 to get in seconds
int[] result = {resultInSeconds/3600, resultInSeconds%3600/60, resultInSeconds%3600%60};
return result;
}
为什么要使用数组来建模时间?为什么要使用从int到double的cast和back呢?你为什么不每循环一秒钟?因为我想从时间中得到第一个数字,这是小时,然后从时间中减去小时,再乘以60,把它转换成分钟,速度是多少单位?850是什么意思?每小时英尺数?为什么当时间>10{time/=10;}时你需要?你不需要一个循环来解一个数学方程;在一行中写出公式并计算结果为什么要使用数组来模拟时间?为什么要使用从int到double的cast和back呢?你为什么不每循环一秒钟?因为我想从时间中得到第一个数字,这是小时,然后从时间中减去小时,再乘以60,把它转换成分钟,速度是多少单位?850是什么意思?每小时英尺数?为什么当时间>10{time/=10;}时你需要?你不需要一个循环来解一个数学方程;用一行字写出公式并计算结果谢谢你的帮助,伙计。谢谢你的帮助,伙计。谢谢你的帮助。我很感激。谢谢你的帮助。我很感激。