javaScript百钱白鸡问题多种解答思路

Posted tea_year

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javaScript百钱白鸡问题多种解答思路相关的知识,希望对你有一定的参考价值。

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        /*
            有公鸡、母鸡、小鸡一共100只,其中公鸡:5钱,母鸡:3钱;三只小鸡一共1钱。
            现在要100钱买100鸡,算一下公鸡、母鸡、小鸡各有多少只?
            假设:公鸡:x只;母鸡:y只;小鸡:z只
            x+y+z=100
            5*x+3*y+z/3=100
            需要列举三个等式才能计算出来?只有两个。
        */
        //多重循环:就是循环里面嵌套循环;也称为循环的嵌套;
        //x=0;需要匹配y从0到100,逐个匹配;
        //y=0;逐个匹配z从0到100;y=1;匹配z从0到100;y=2,匹配z从0到100;
        //最终匹配100*100*100=1000000;1百万次
        // for (var x = 0; x <= 100; x++) {  //x:公鸡
        //     for (var y = 0; y <= 100; y++) {   //y:母鸡 
        //         for (var z = 0; z <= 100; z++) {                //z:小鸡
        //             if ((x + y + z == 100) && (5 * x + 3 * y + z / 3 == 100)) {
        //                 document.write("公鸡:" + x + ",母鸡:" + y + ",小鸡:" + z + "<br/>");
        //             }
        //         }
        //     }
        // }
        /*
            提高效率:
            1.降低循环次数;鸡:活蹦乱跳的,一定是整数:20*33*100;66000;20*33
            2.减少循环,原来3个,能不能变成2个
        */
        for (var x = 0; x <= 100 / 5; x++) {  //x:公鸡,最大个数:20
            for (var y = 0; y <= 100 / 3; y++) {   //y:母鸡 ;最大33
                //有个x+y+z=100,可以根据这个公式:z=100-x-y,得到z的值,所以不需要循环了
                z = 100 - x - y;
                if ((5 * x + 3 * y + z / 3 == 100)) {
                    document.write("公鸡:" + x + ",母鸡:" + y + ",小鸡:" + z + "<br/>");
                }
            }
        }
    </script>
</body>

</html>

以上是关于javaScript百钱白鸡问题多种解答思路的主要内容,如果未能解决你的问题,请参考以下文章

3. 百钱买白鸡问题

算法-百钱买白鸡

python-百钱买白鸡

百钱白鸡(for循环的练习)

《C#零基础入门之百识百例》(十九)穷举法 -- 百钱百鸡

程序逻辑知识