赞助
  /*
            百鸡百钱
                有一百钱,要买鸡一百只
                公鸡5钱一只 母鸡3钱一只 仔鸡三只1钱
                一百钱必须都花了,必须买够一百鸡
                三种鸡,每种都必须有
                问 公鸡 母鸡 仔鸡 各多少只

            实现思路:穷举法
                生成所有的公鸡母鸡仔鸡数值的可能性,计算符合题目要求的情况,并且输出结果
        */

        // 方法1,三种鸡的范围都是 1-100
        for (var g = 1; g <= 100; g++) {
            for (var m = 1; m <= 100; m++) {
                for (var z = 1; z <= 100; z++) {
                    // 判断条件,所有的鸡加在一起是100,所有鸡的钱加在一起,也是100
                    // 这里两个条件必须同时满足,是逻辑与 && 关系
                    if (g + m + z == 100 && g * 5 + m * 3 + z / 3 == 100) {
                        console.log(`有公鸡${g}只,有母鸡${m}只,有仔鸡${z}只`);
                    }
                }
            }
        }

        // 方法2 
        // 公鸡 5钱一只 最多是 20只 因为 20只公鸡 就已经 100 钱了
        // 母鸡 3钱一只 最多是 33只 
        // 循环次数减少,就提高了循环效率
        for (var g = 1; g <= 20; g++) {
            for (var m = 1; m <= 33; m++) {
                for (var z = 1; z <= 100; z++) {
                    // 判断条件,所有的鸡加在一起是100,所有鸡的钱加在一起,也是100
                    // 这里两个条件必须同时满足,是逻辑与 && 关系
                    if (g + m + z == 100 && g * 5 + m * 3 + z / 3 == 100) {
                        console.log(`有公鸡${g}只,有母鸡${m}只,有仔鸡${z}只`);
                    }
                }
            }
        }


        // 方法3 
        // 实际上要满足一共100鸡,假如公鸡10只,母鸡30只,仔鸡就必须是60只,才能满足一共100鸡的条件
        // 也意味着 如果 公鸡 母鸡 个数确定 仔鸡的数量一定必须是 100 - 公鸡 - 母鸡
        // 实际上 仔鸡 的循环是不需要的
        // 减少循环的层数,也能提高执行效率
        for (var g = 1; g <= 20; g++) {
            for (var m = 1; m <= 33; m++) {
                // 仔鸡数量就等于 总数 100 只 减去 公鸡数量和母鸡数量
                var z = 100 - g - m;
                // 只需要判断,钱数是否是100钱
                if (g * 5 + m * 3 + z / 3 == 100) {
                    console.log(`有公鸡${g}只,有母鸡${m}只,有仔鸡${z}只`);
                }
            }
        }
posted on 2020-11-22 21:39  Tsunami黄嵩粟  阅读(178)  评论(0编辑  收藏  举报