贪心算法

贪心算法

定义:在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑。他所做出的是在某种意义上的局部最优解。
算法特点(通常):1.随着算法的进行,讲积累起其他两个集合:一个包含已经被考虑过并被选出的候选对象,另一个包括已经被考虑过但被抛弃的候选对象。
2.有一个函数来检查候选对象的集合是否提供了问题的解答。该函数不考虑此时的解决方法是否最优。
3.另一个函数来检查是否一个候选对象的集合是可行的,也即是否可能在该集合上添加更多的候选对象以获得一解。
4.选择函数可以指出哪一个剩余的候选对象最有希望构成问题的解。
5.最后,目标函数给出解得值。

贪心算法的实现框架
从问题的某一初始解出发;
while (能朝给定总目标前进一步)
{
利用可行的决策,求出可行解的一个解元素;
}
由所有解元素组合成问题的一个可行解;

例如:for(i=0; i<s; i++)
            scanf("%d%d",&a[i].v,&a[i].w);
        sort(a,a+s,cmp);

例:设有n个正整数,将他们链接成一排,组成一个最大的多位整数,例如n=3时,三个整数,13,312,343,连成的最大整数为:34331213
输入:n
n个数
输出:连成的多位数
算法分析:此题很容易想到使用贪心算法,正确的贪心标准是:先把整数化成字符串,然后在比较a+b和b+a,如果a+b>b+a,就把a排在b的前面,反之则把a排在b的后面。

贪心算法的选择可以依赖于以往所作出的选择,但绝不依赖于将来的选择,也不依赖于子问题的解。因此贪心算法与其他算法比有一定的速度优势。如果一个问题可以同时用几种方法解决,贪心算法应该是最好的选择之一。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值