华为OD机试真题 JavaScript 实现【狼羊过河】【2022Q4 100分】,附详细解题思路-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;

五、JavaScript算法源码

function calculate(m, n, x) {
    let counts = 1; // 初始过河的一次
    if (x >= m) { // 可载狼和羊的数量大于羊的数量,可以一次过河完成
        counts++;
    } else if (n > m && n < 2 * (x - 1)) { // 一次过河无法同时运输所有的狼和羊,需要第二次过河
        counts += 2;
    } else { // 一次过河无法同时运输所有的狼和羊,需要多次运输
        while (m > 0) {
            m -= x;
            n -= x - 1;
            counts++;
        }
    }
    return counts;
}

六、效果展示

1、输入

5 3 3

2、输出

3

3、说明

第一次:2只狼
第二次:三只羊
第三次:2只羊,1只狼

华为OD机试真题 JavaScript 实现【狼羊过河】【2022Q4 100分】,附详细解题思路-LMLPHP


🏆下一篇:华为OD机试真题 JavaScript 实现【相对开音节】【2022Q4 100分】,附详细解题思路

🏆本文收录于,华为OD机试(JavaScript)真题(A卷+B卷)

每一题都有详细的答题思路、详细的代码注释、样例测试,订阅后,专栏内的文章都可看,可加入华为OD刷题群(私信即可),发现新题目,随时更新,全天CSDN在线答疑。

华为OD机试真题 JavaScript 实现【狼羊过河】【2022Q4 100分】,附详细解题思路-LMLPHP

06-13 15:01