小鸡5毛钱一只,母鸡3块钱一只,公鸡5块钱一只,问300块钱买100只鸡,有几种买法?用JavaScript写
var g, m, x;
for (g = 0; g <= 60; g++) {
for (m = 0; m <= 100; m++) {
for (x = 0; x <= 100; x++) {
if ((5 * g + 3 * m + x / 2 == 300) && (g + m + x == 100)){
alert("公鸡"+g+"只,母鸡"+m+"只,小鸡" +x+"只。"); }
}
}
}
冒昧改了一下楼上的,g既然是公鸡,那么不可能超过60个,所以把一百改为60,可以减少40次大的循环。
var g, m, x;
for (g = 0; g <= 100; g++) {
for (m = 0; m <= 100; m++) {
for (x = 0; x <= 100; x++) {
if ((5 * g + 3 * m + x / 2 == 300) && (g + m + x == 100))
alert("公鸡"+g+"只,母鸡"+m+"只,小鸡" +x+"只。");
}
}
}
var g, m, x;
for (g = 0; g < 60; g++) {
for (m = 0; m < 100; m++) {
for (x = 0; x < 100; x++) {
if ((5 * g + 3 * m + x / 2 == 300) && (g + m + x == 100)){
alert("公鸡"+g+"只,母鸡"+m+"只,小鸡" +x+"只。"); }
}
}
}
改了二楼的,既然都要有,那么不可能有是100的情况。
同上,嵌套三次循环就行了
var g, m, x, maxNumber=100, maxPrice=300;
console.profile('性能分析器');
console.time("循环");
for (g = 0; g <= maxNumber; g++) {
if(5 * g > maxPrice){
break;
}
for (m = 0; m <= maxNumber; m++) {
if((5 * g + 3 * m) > maxPrice || (g + m > maxNumber)){
break;
}
for (x = 0; x <= maxNumber; x++) {
if ((5 * g + 3 * m + x / 2 == maxPrice) && (g + m + x == maxNumber)){
console.log("公鸡" + g + "只,母鸡" + m + "只,小鸡" + x + "只。");
}
}
}
}
console.timeEnd("循环");
console.profileEnd('性能分析器');
多加两个判断,会让性能快几毫秒,完美主义者,哈哈哈
var g, m, x;
for (g = 0; g <= 60; g++) {
for (m = 0; m <= 100; m++) {
x = 100-y-x;
if ((5 * g + 3 * m + x / 2 == 300) && (g + m + x == 100)){
alert("公鸡"+g+"只,母鸡"+m+"只,小鸡" +x+"只。"); }
}
}