算法之穷举法
顾名思义,所谓的穷举法就是把问题的所有解决方案都一一找出来,此法适用于一个问题有多种解决方案,或找最佳方案等。
小明去超市买商品,手里100元发现,毛巾5元/条 牙刷2元/只 牙膏 10元/支,问:将100元花完,共有多少种购买方案?
思路分析:
-
找到条件和问题
- 买毛巾、牙膏或牙刷的总价为100元
- 找出购买的方案
-
先转化为数学问题
设毛巾数为i,牙膏数为j,牙刷数为k;
则5i+2k+10*j=100 成立的方案 -
确定循环为for循环和if语句判断
-
输出结果
代码如下
var n = 0;
//控制牙膏
for (var i = 0; i < 10; i++) {
//控制毛巾
for (var j = 0; j < 20; j++) {
//控制牙刷
for (var k = 0; k < 50; k++) {
//判断总价
if (2 * k + 5 * j + 10 * i == 100) {
n++; //计数器
}
}
}
}
console.log("共有 "+n+" 钟方案 ");
总结:
遇到问题不能想着一下就做出来了,要静下心来,分步去做,逐步简化问题,最终把问题解决掉。
注意
做题时,一定要注意细节,不要错看条件或问题,对于代码的书写要注意代码拼写和逻辑,更要注意代码书写格式和注释。最后遇见错误要锻炼调错。