01-华为 OD 机试 - 最快到达医院的方法(Java & JS & Python )2023Q1 逻辑分析

该文提供了一道编程题,要求根据给定的距离、速度和等待时间,判断在公共交通不便的情况下,大壮是步行到医院B快还是搭乘计程车到医院A快。给出了JavaScript、Java和Python三种语言的算法实现。
摘要由CSDN通过智能技术生成
题目描述
新型冠状病毒疫情的肆虐,使得家在武汉的大壮不得不思考自己家和附近定点医院的具体情况。经过一番调查,大壮明白了距离自己家最近的定点医院有两家。其中:医院 A 和自己的距离是 X 公里。医院 B 和自己的距离是 Y 公里由于武汉封城,公交停运,私家车不能上路,交通十分不便。现在到达医院 A 只能搭乘志愿者计程车,已知计程车的平均速度是 M/分钟,上车平均等待时间为 L 分钟。到达医院 B 只能步行,平均速度是 N/分钟;给出 XYMLN 的数据,请问大壮到达哪家医院最快?
输入描述
一行,5 个数。
分别是到达 A 医院的距离,到达 B 医院的距离,计程车平均速度,上车等待时间,步行速
度。
输出描述
一行,计程车 (Taxi) 、步行 (Walk) 、相等 (Same)
用例
输入 50 5 500 30 90
输出 Walk
说明 无
题目解析
本题简单的有点过分
根据题目意思,去 A 只能 Taxi,去 B 只能 Walk,而对应的距离和速度都给出来了,因此解
题逻辑应该没有什么悬念这题难道在考察细心程度? 就是距离单位是公里,速度单位是米/
分钟?
JavaScript 算法源码
/* JavaScript Node ACM 模式 控制台输入获取 */
const readline = require("readline");
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
rl.on("line", (line) => {
const [x, y, m, l, n] = line.split(" ").map(Number);
console.log(getResult(x, y, m, l, n));
});
/**
* @param {*} x 到达 A 医院的距离 (公里)
* @param {*} y 到达 B 医院的距离 (公里)
* @param {*} m 计程车平均速度 (米/分钟)
* @param {*} l 上车等待时间 (分钟)
* @param {*} n 步行速度 (米/分钟)
*/
function getResult(x, y, m, l, n) {
const taxiToA = (x * 1000) / m + l;
const walkToB = (y * 1000) / n;
if (taxiToA == walkToB) {
return "Same";
} else if (taxiToA > walkToB) {
return "Walk";
} else {
return "Taxi";
}
}
Java 算法源码
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
double x = sc.nextDouble();
double y = sc.nextDouble();
double m = sc.nextDouble();
double l = sc.nextDouble();
double n = sc.nextDouble();
System.out.println(getResult(x, y, m, l, n));
}
/**
* @param x 到达 A 医院的距离 (公里)
* @param y 到达 B 医院的距离 (公里)
* @param m 计程车平均速度 (米/分钟)
* @param l 上车等待时间 (分钟)
* @param n 步行速度 (米/分钟)
* @return 请问大壮到达哪家医院最快
*/
public static String getResult(double x, double y, double m, double l, double n) {
double taxiToA = x * 1000 / m + l;
double walkToB = y * 1000 / n;
if (taxiToA == walkToB) {
return "Same";
} else if (taxiToA > walkToB) {
return "Walk";
} else {
return "Taxi";
}
}
}
Python 算法源码
# 输入获取
x, y, m, l, n = map(float, input().split())
# 算法入口
def getResult(x, y, m, l, n):
"""
:param x: 到达 A 医院的距离 (公里)
:param y: 到达 B 医院的距离 (公里)
:param m: 计程车平均速度 (/分钟)
:param l: 上车等待时间 (分钟)
:param n: 步行速度 (/分钟)
:return: 请问大壮到达哪家医院最快
"""
taxiToA = x * 1000 / m + l
walkToB = y * 1000 / n
if taxiToA == walkToB:
return "Same"
elif taxiToA > walkToB:
return "Walk"
else:
return "Taxi"
# 算法调用
print(getResult(x, y, m, l, n))
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值