题目要求
用一百钱买一百只鸡,其中:公鸡5钱1只、母鸡3钱1只、仔鸡3只1钱。一百钱必须正好花完,并且每种鸡都要有。
代码实现
最简单的循环:
for(var a = 1 ; a <= 100 ; a++){
for(var b = 1 ; b <= 100 ; b++){
for(var c = 1 ; c <= 100 ; c++){
if(a+b+c == 100 && a*5 + b*3 + c/3 == 100){
console.log( `公鸡是${a}只,母鸡是${b}只,仔鸡是${c}只`);
}
}
}
}
实现结果
优化算法
1、因为所有的鸡一共是100只,如果公鸡和母鸡数量已经确定,那么仔鸡一定是 (100-a-b)只。
2、一只公鸡是5钱,现在只有100钱,理论上公鸡最多是20只,并且母鸡和仔鸡也必须有,所以公鸡的数量最多是小于20只。
3、一只母鸡是3钱,现在只有100钱,理论上母鸡最多是33只,并且母鸡和仔鸡也必须有,所以母鸡的数量最多是小于33只。
// 公鸡最多20只,所以是<20
for(var a = 1 ; a < 20 ; a++){
for(var b = 1 ; b < 33 ; b++){
// 一共100只鸡,仔鸡数量=100-公鸡数-母鸡数
var c = 100 - a - b;
// 3种鸡,一共一百钱
if(a*5 + b*3 + c/3 == 100){
console.log( `公鸡是${a}只,母鸡是${b}只,仔鸡是${c}只`);
}
}
}