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百钱白鸡问题多种解答思路的主要内容,如果未能解决你的问题,请参考以下文章