等车时间最少 算法java

某长途车从始发站早6点到晚6点每小时整点发车一次。正常情况下,汽车在发车40分钟后停靠本站。由于路上可能出现堵车,假定汽车因此而随机耽搁0-30分钟,则最坏情况下汽车发车70分钟后才到达本站。假设某位旅客在每天的10:00-10:30之间一个随机时刻来到本站,那么他平均等待的时间是多少分钟。请计算出平均等待的分钟数。用Java实现,谢谢!

计算code

public class BusSchedule {
    public static void main(String[] args) {
        int n = 12; // 每小时的车辆数
        double p1 = 1.0; // 到站概率
        double p2 = (1.0 / n) * (30.0 / 60); // 延迟30分钟到站的概率
        double p3 = (1.0 / n) * (10.0 / 60); // 延迟70分钟到站的概率
        double waitTime = 40 * p1 + 55 * p2 + 70 * p3;
        System.out.println("平均等待时间为:" + waitTime + "分钟");
    }
}

计算结果

img

问题描述中提到,汽车在正常情况下需要40分钟才能到达本站,但也可能因为堵车等原因延误0-30分钟。最坏情况下,汽车需要70分钟才能到达本站。旅客需要在每天的10:00-10:30之间来到本站,那么他平均等待的时间是多少分钟?

为了解决这个问题,我们可以使用一个循环来等待每辆汽车的到来,并且记录每个汽车到达的时间。假设我们有一个计数器count,用于记录每个汽车到达的时间,还有一个字符串train_time用于记录每个汽车到达的时间。

以下是Java代码实现:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String train_time = scanner.next();
        String train_time_str = train_time.replace(" ", "_");
        int count = 0;
        int max_time = 0;
        int min_time = 0;
        int min_time_diff = 0;

        while (true) {
            System.out.println("请输入出发时间(10:00-10:30之间):");
            String train_time_str = scanner.next();
            int time_diff = Integer.parseInt(train_time_str.replace(" ", "_"));

            if (time_diff < min_time) {
                min_time = time_diff;
                min_time_diff = time_diff;
            }

            if (time_diff > max_time) {
                max_time = time_diff;
                max_time_diff = time_diff;
            }

            if (time_diff == max_time_diff) {
                break;
            }

            count++;
            System.out.println("到达时间: " + train_time_str + ", 到达时间差异: " + time_diff);

            if (count > 30) {
                break;
            }
            count = 0;
            time_diff = 0;
            max_time = 0;
            min_time = 0;
            min_time_diff = 0;
        }

        System.out.println("平均等待时间: " + (max_time - min_time) / count);
    }
}

在这个代码中,我们使用了字符串匹配的方法来获取每个汽车到达的时间,并将它们存储在一个字符串数组中。我们还计算了每个汽车到达的时间的差异,并将其存储在一个变量中。最后,我们使用一个循环来检查每个汽车到达的时间,并记录它。

当循环结束时,我们检查每个汽车到达的时间的差异,如果差异大于30分钟,则循环结束。我们更新每个汽车到达的时间和差异,并保持它们。最后,我们计算平均等待时间,并将其打印出来。

请注意,这个代码可能不是最优的,因为它使用了公共语言资源,并且可能不适合所有情况。但是,它提供了一个基本的框架来解决这个问题。