概述
枚举法
枚举(Enumuerate)是蛮力策略的一种表现,最普遍的思维方式。它根据问题中的条件将可能的情况一一列举出来,逐一尝试从中找到满足问题条件的解。
- 找出枚举范围
- 找出约束条件
优点: 算法简单,在局部地方使用枚举法,效果十分的好
缺点: 运算量过大,当问题的规模变大的时候,循环的阶数越大,执行速度越慢
示例: 百钱百鸡问题
我国古代数学家张丘建在《算经》一书中提出的数学问题:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?
{
x
+
y
+
z
=
100
5
x
+
3
y
+
z
3
=
100
begin{cases} x + y + z = 100\ 5x + 3y + frac{z}{3} = 100 end{cases}
{x+y+z=1005x+3y+3z=100
function f () {
for (let x = 0; x <= 20; x++) {
for (let y = 0; y <= 33; y++) {
for (let z = 0; z <= 100; z++) {
if (x + y + z === 100 && 5 * x + 3 * y + z/3 === 100) {
console.log(x, y, z)
}
}
}
}
}
优化算法, z = 100 − x − y z = 100 - x - y z=100−x−y
function f () {
for (let x = 0; x <= 20; x++) {
for (let y = 0; y <= 33; y++) {
let z = 100 - x - y
if (z % 3 === 0 && 5 * x + 3 * y + z/3 === 100) {
console.log(x, y, z)
}
}
}
}
最后
以上就是干净咖啡为你收集整理的算法--枚举法的全部内容,希望文章能够帮你解决算法--枚举法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复