编程测试-走路与打车所用时间最短

本文介绍了一个计算从起点到终点的最短行程时间的Java程序。该程序通过输入多个站点的坐标,计算步行时间和打车时间,进而得出两种出行方式的总用时,并输出最短时间。涉及的主要步骤包括读取输入数据、计算距离和时间。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import java.util.Scanner;

public class ShortTime {

    public static void main(String[] args) {

        int[] destination = new int[2];
        int walkTime, taxiTime,minTime;
        Scanner input = new Scanner(System.in);
        //打车点为num
        int stationNumber = input.nextInt();
        int[] x = new int[stationNumber];
        int[] y = new int[stationNumber];
        System.out.println("1s");
        while(input.hasNext()){
            System.out.println("2s");
            for(int i =0; i < stationNumber; i++){
                System.out.println("t");
                x[i] = input.nextInt();
                System.out.println("d");
            }
            break;
        }
        System.out.println("sex");
        while(input.hasNext()){

            for(int i = 0; i< stationNumber;i++){
                y[i] = input.nextInt();
            }
//          destination[0] = input.nextInt();
//          destination[1] = input.nextInt();
//          walkTime = input.nextInt();
//          taxiTime = input.nextInt();

            break;
        }
        destination[0] = input.nextInt();
        destination[1] = input.nextInt();
        walkTime = input.nextInt();
        taxiTime = input.nextInt();
        int minTotalTime = getMinTime(x, y, destination, walkTime, taxiTime);
        System.out.println("\n");
        System.out.println(minTotalTime);
    }

    public static int getMinTime(int[]x ,int[]y, int[] destination, int walkTime, int taxiTime){
        //1、walktime
        //int totalDistance = x[x.length - 1] - x[0] + y[y.length-1] - y[0];

        //int totalWalkTime = totalDistance * walkTime;
        int totalWalkTime = (Math.abs(destination[0]) + Math.abs(destination[1])) * walkTime;
        //
        int minStationDistance = 0, k = 0,min = Math.abs(x[0])+Math.abs(y[0]); int totalMinTime = 0;
        int[] minStation = new int[2];
        for(int i =0; i<x.length; i++){

            int sum = Math.abs(x[i])+Math.abs(y[i]);

            if(sum <= min){
                min = sum;
                minStation[0] = x[i];
                minStation[1] = y[i];
            }
            //temp = sum;
        }
        int walkStationTime = min * walkTime;
        int taxiTime2 = (Math.abs(destination[1] - minStation[1]) + Math.abs(destination[0] - minStation[0])) *taxiTime;  
        int totalTime2 =  walkStationTime + taxiTime2;
        if(totalWalkTime < totalTime2){
            totalMinTime = totalWalkTime;
        }else{
            totalMinTime = totalTime2;
        }
        return totalMinTime;

    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值