华为OD机试真题B卷 Java 实现【狼羊过河】,附详细解题思路-LMLPHP

一、题目描述

一农夫带着m只羊,n只狼过河,农夫有一条可载x只狼/羊的船;农夫在时或者羊的数量大于狼时,狼不会攻击羊;

农夫在不损失羊的情况下,运输几次可以完成运输?

返程不计入次数。

二、输入描述

输入参数为 m, n , x;

m 为羊的数量、n为狼的数量、x为可载狼和羊的数量。

三、输出描述

返回运输次数即可。

如果无法完成运输返回0。

四、解题思路

  1. 可载狼和羊的数量 > 羊的数量;
  2. 运输次数+1;
  3. 狼的数量 > 狼的数量 且 狼的数量 < 2 * (x - 1);
  4. 需要第二次运输+1;
  5. 可载狼和羊的数量 < 羊的数量,需要多次运输;
  6. 狼的数量减去x-1,羊的数量减去x;
  7. 输出运输次数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机试真题B卷 Java 实现【狼羊过河】,附详细解题思路-LMLPHP


🏆下一篇:华为OD机试真题 Java 实现【获得完美走位】【2023Q1 100分】

🏆本文收录于,华为OD机试(JAVA)(2022&2023)

本专栏包含了最新最全的2023年华为OD机试真题,有详细的分析和Java解答。已帮助1000+同学顺利通过OD机考。专栏会持续更新,每天在线答疑。

华为OD机试真题B卷 Java 实现【狼羊过河】,附详细解题思路-LMLPHP

05-29 13:54