前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >算法--枚举法

算法--枚举法

作者头像
奋飛
发布2019-08-15 16:27:19
4130
发布2019-08-15 16:27:19
举报
文章被收录于专栏:Super 前端Super 前端

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://ligang.blog.csdn.net/article/details/83475665

枚举法

枚举(Enumuerate)是蛮力策略的一种表现,最普遍的思维方式。它根据问题中的条件将可能的情况一一列举出来,逐一尝试从中找到满足问题条件的解。

  • 找出枚举范围
  • 找出约束条件

优点: 算法简单,在局部地方使用枚举法,效果十分的好 缺点: 运算量过大,当问题的规模变大的时候,循环的阶数越大,执行速度越慢

示例: 百钱百鸡问题 我国古代数学家张丘建在《算经》一书中提出的数学问题:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何? {x+y+z=1005x+3y+z3=100 \begin{cases} x + y + z = 100\\ 5x + 3y + \frac{z}{3} = 100 \end{cases} {x+y+z=1005x+3y+3z​=100​

代码语言:javascript
复制
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−yz = 100 - x - yz=100−x−y

代码语言:javascript
复制
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)
            }
    	}
    }
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年10月28日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 枚举法
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档