一、题目描述
一农夫带着m只羊,n只狼过河,农夫有一条可载x只狼/羊的船;农夫在时或者羊的数量大于狼时,狼不会攻击羊;
农夫在不损失羊的情况下,运输几次可以完成运输?
返程不计入次数。
二、输入描述
输入参数为 m, n , x;
m 为羊的数量、n为狼的数量、x为可载狼和羊的数量。
三、输出描述
返回运输次数即可。
如果无法完成运输返回0。
四、解题思路
- 可载狼和羊的数量 > 羊的数量;
- 运输次数+1;
- 狼的数量 > 狼的数量 且 狼的数量 < 2 * (x - 1);
- 需要第二次运输+1;
- 可载狼和羊的数量 < 羊的数量,需要多次运输;
- 狼的数量减去x-1,羊的数量减去x;
- 输出运输次数counts;
五、Java算法源码
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 狼的数量
int m = sc.nextInt();
// 狼的数量
int n = sc.nextInt();
// 可载狼和羊的数量
int x = sc.nextInt();
// 运输次数
int counts = 1;
// 可载狼和羊的数量 > 羊的数量
if (x > m) {
// 运输次数+1
counts++;
// 狼的数量 > 狼的数量 且 狼的数量 < 2 * (x - 1)
if (n > m && n < (2 * (x - 1))) {
// 需要第二次运输+1
counts++;
}
} else {
// 多次运输
while (m > 0) {
// 狼的数量减去x-1,羊的数量减去x
n = n - x + 1;
m = m - x;
// 运输次数+1
counts++;
}
}
// 输出运输次数counts
System.out.println(counts);
}
六、效果展示
1、输入
5 3 3
2、输出
3
3、说明
第一次:2只狼
第二次:三只羊
第三次:2只羊,1只狼
🏆下一篇:华为OD机试真题 Java 实现【获得完美走位】【2023Q1 100分】
🏆本文收录于,华为OD机试(JAVA)(2022&2023)
本专栏包含了最新最全的2023年华为OD机试真题,有详细的分析和Java解答。已帮助1000+同学顺利通过OD机考。专栏会持续更新,每天在线答疑。