经典算法百元买百鸡

一百个铜钱买了一百只鸡,其中母鸡一只5钱、公鸡一只3钱,小鸡一钱3只,问一百只鸡中公鸡、母鸡、小鸡各多少)。

这是一个古典数学问题,设一百只鸡中公鸡、母鸡、小鸡分别为x,y,z,问题化为三元一次方程组:

这里x,y,z为正整数,且z是3的倍数;由于鸡和钱的总数都是100,可以确定x,y,z的取值范围:

  1. x的取值范围为1~20

  2. y的取值范围为1~33

  3. z的取值范围为3~99,步长为3

对于这个问题我们可以用穷举的方法,遍历x,y,z的所有可能组合,最后得到问题的解。当然也可以简化算法去完成这个问题。

 for (var i = 0; i <= 20; i++) {//母鸡
  for (var j = 0; j <= 33; j++) {//公鸡
 var m = (100 - j - i);剩下的就是小鸡
 if (i * 5 + j * 3 + m * (1 / 3) == 100 && i * j * m > 0) {//判断总金额为
100,每一种都不能为0
  console.log(i, j, m);
            }
        }
    }

另一种写法

for (var i = 0; i < 20; i++) {//母鸡最多能买20只
for (var j = 0; j < 33; j++) {//公鸡最多能买33只
for (var m = 0; m <= 300; m++) {小鸡最多能买300只
if (i * 5 + j * 3 + m * (1 / 3) == 100 && i * j * m != 0 && i + j + m == 
100) {//判断总金额为100,每一种都不能为0
console.log(i, j, m)
                }
            }
        }
    }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容