JavaScript的for循环语句练习之解决小马过河的问题

JavaScript的for循环语句练习之解决小马过河的问题

上篇文章我们说了怎么计算数学问题鸡兔同笼,这边文章咱们来说一下稍微再加大写难度的问题,小马过河。问题是现在有一群马,大马可以驮2石粮食,中马可以驮1石粮食,两头小马才可以驮1石粮食,现在要用100匹马,驮100石粮食,该如何调配?

在这里插入图片描述
1.解决这个问题主要是要先确定三种马加起来一共有100只,同时驮的粮食加起来也得是100。

    // 假设大马为x,中马为y,小马为z 那现在便可得出函数 x+y+z=100 2x+y+z÷2=100
    
    // 转换为for循环解决则变成了:
    // 假设大马存在的可能 
    for (var x = 0; x <= 50; x++) {
        // 假设大马存在的情况下  对应的中马存在的情况
        for (var y = 0; y <= 100; y++) {
            // 对应小马存在的情况
            for (var z = 0; z <= 200; z++) {
                if (x + y + z == 100 && 2 * x + y + z / 2 == 100) {
                    document.write("大马有:" + x + "匹,中马有:" + y + "匹,小马有:" + z + "匹" + "<br/>");
                }
            }
        }
    }
    

上面的代码代码虽说解决了问题,但是太过于繁琐,因为我们已经得出了结论,x+y+z=100,所以代码可以简化如下:

    for (var x = 0; x <= 50; x++) {
        // 假设大马存在的情况下  对应的中马存在的情况
        for (var y = 0; y <= 100; y++) {
            // 对应小马存在的情况
            var z = 100 - x - y;
            if (2 * x + y + z / 2 == 100) {
                document.write("大马有:" + x + "匹,中马有:" + y + "匹,小马有:" + z + "匹" + "<br/>");
            }
        }
    }

解决此类问题关键在于梳理好所有的判断条件,然后进行计算,同时注意简化代码。

视频讲解链接:
https://www.bilibili.com/video/BV12p4y1Q7rN

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章