算法汇总

1、分治算法

将原问题分解规模较小的、类似于原问题的子问题,【递归】地求解这些子问题,然后合并其解,建立原问题的解。
和动态规划有相似之处。
一般解决子问题相对独立的问题,子问题重叠的问题一般用动态规划解决。

2、动态规划

和分治算法类似,也是分解然后合并,最后得到解。
区别是:子问题重叠,动态规划会将其解存储起来,下次求解该子问题时,直接拿过来。
用动态规划能解决的问题,用分治算法肯定能解决,只是运行时间长了。

动态规划试图只解决每个子问题一次。
一旦某个给定子问题的解已经得到,则将其存储,下次需要直接查表取出。

3、贪心算法

使用场景:有一组数据,我们定义了限制值和期望值,希望从中选出一些数据,在满足限制值的情况下,期望值最大。

算法思想:每次选择时,在对限制值同等贡献情况下,选择对期望值贡献最大的数据;
                  如果数据的限制值均不等,其期望值也不等,则根据情况进行最优选择。

验证:举几个例子验证正确性。

注:贪心算法有时候对一些问题并不能给出最优解,必须得针对情况验证分析。

实战分析:

1、分糖果
我们有 m 个糖果和 n 个孩子。糖果少,孩子多,怎么把糖果分配给孩子。每个糖果的大小不等,这 m 个糖果大小分别是 s1, s2, s3, … , sm。除此之外,每个孩子对糖果大小的需要也不一样,假设这 n 个孩子对糖果大小的需要分别是g1, g2, g3, … ,gn。
如何分配,能满足最多数量的孩子????

思路:每次从孩子中,找到对糖果需求最小的,然后在糖果中,找到能满足他的最小的糖果,分给他。重复这样的操作

2、钱币找零
假设我们有1元、2元、5元、10元、20元、50元、100元面额的纸币,他们的张数分别是c1、

 

4、回溯算法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值