Java 如何解决龟赛跑

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],它是所需的时间,以小时、分钟和秒为单位,四舍五入到最

有一个问题叫做:乌龟赛跑

问题是:

两只名为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

我试着这样解决它:

  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;}时你需要?你不需要一个循环来解一个数学方程;用一行字写出公式并计算结果谢谢你的帮助,伙计。谢谢你的帮助,伙计。谢谢你的帮助。我很感激。谢谢你的帮助。我很感激。