枚举算法适用于候选答案数量一定的情况 。
典型例子包括鸡钱问题 , 有公鸡5 , 母鸡3 , 三小鸡1 , 求m钱n鸡的所有可能解 。 可以采用一个三重循环将所有情况枚举出来 。 代码如下:
五、回溯算法
回溯算法是一个类似枚举的搜索尝试过程 , 主要是在搜索尝试过程中寻找问题的解 , 当发现已不满足求解条件时 , 就“回溯”返回 , 尝试别的路径 。
许多复杂的 , 规模较大的问题都可以使用回溯法 , 有“通用解题方法”的美称 。
典型例子是8皇后算法 。 在8×8格的国际象棋上摆放八个皇后 , 使其不能互相攻击 , 即任意两个皇后都不能处于同一行、同一列或同一斜线上 , 问一共有多少种摆法 。
回溯法是求解皇后问题最经典的方法 。 算法的思想在于如果一个皇后选定了位置 , 那么下一个皇后的位置便被限制住了 , 下一个皇后需要一直找直到找到安全位置 , 如果没有找到 , 那么便要回溯到上一个皇后 , 那么上一个皇后的位置就要改变 , 这样一直递归直到所有的情况都被举出 。
六、动态规划算法
动态规划过程是:每次决策依赖于当前状态 , 又随即引起状态的转移 。 一个决策序列就是在变化的状态中产生出来的 , 所以 , 这种多阶段最优化决策解决问题的过程就称为动态规划 。
动态规划算法适用于当某阶段状态给定以后 , 在这阶段以后的过程的发展不受这段以前各段状态的影响 , 即无后效性的问题 。
典型例子比如说背包问题 , 给定背包容量及物品重量和价值 , 要求背包装的物品价值最大 。
以上就是程序员经常使用的六种经典算法 , 读者们还了解哪些常用的优秀算法吗?欢迎留言哦 。
- 安踏涉黄了?肮脏的人眼里,世界都是脏的
- 生命探测仪|他的算法大幅提升了生命探测速度
- 算法|36氪首发 | 构建AI脑科学诊疗平台,「同心智医」获亿元融资
- 安卓|安卓阵营其它品牌出货量都下滑唯独荣耀增长 赵明解释背后原因
- 红米手机|顶级手机屏幕,大家可能都只会想到三星,但一场大洗牌即将到来
- oppo reno|2022颜值天花板稳了?Reno8 Pro三色图赏:想要的它都有
- 程序员|程序员月薪4万以上,年薪百万是常态,可为何还担忧不满呢?
- 程序员|荣耀70系列正式发布,追求颜值,却又兼顾性能
- 液晶显示器|LCD屏手机回归元年?京东方、华星等国内屏幕的水平都怎么样了?
- Linux|所有的国产PC操作系统,都是linux套壳,能自主可控么?