贪心算法之最大的子组合求解
2016-04-14 11:47
218 查看
本来博主是没有心情写这篇博客了,因为昨天住的地方遭贼了。半夜两点多,偷开我家窗户,把博主卧室里面的玫瑰金给偷走了。当时博主就睡得特别不舒服,半夜醒来就发现手机被偷了。搞得博主后半夜基本没有睡,万幸的是,博主的手机开了“查找iphone”功能,因此开启了丢失模式之后,任小贼再牛逼,刷了机也用不了。虽然拿不回来,也要恶心死小偷。所以,在此,博主也提醒各位博友,一定一定要将iphone的“查找iphone功能”打开。
回到正题吧,前两天在复习数据结构和算法,也看了一些算法题。于是,就将自己碰到的且学习了的算法题,贡献到博客中,以备温故而知新嘛。
贪心算法又称为扫描算法,在《编程珠玑》这本书中有介绍,说实话,我是因为不懂这个算法才去看的这本书,而不是从书中看到这个算法。贪心算法是一种有缺陷的算法。主要思想就是通过求解局部最优解来获得全局最优解的算法。主要是这个算法无法考虑到所有的情形,所以在某一些的场景中是十分有效,但适用性不广。下面就是这个算法的一个实例应用。
求一个数组中的所有子组中最大的一个。例如:-1,2,5,3,-2,5,-3中最大的子组和为2,5,3,-2,5这个子组。下面就给出这个算法的实现代码,代码异常简单,但是设计思想非常狡猾。
回到正题吧,前两天在复习数据结构和算法,也看了一些算法题。于是,就将自己碰到的且学习了的算法题,贡献到博客中,以备温故而知新嘛。
贪心算法又称为扫描算法,在《编程珠玑》这本书中有介绍,说实话,我是因为不懂这个算法才去看的这本书,而不是从书中看到这个算法。贪心算法是一种有缺陷的算法。主要思想就是通过求解局部最优解来获得全局最优解的算法。主要是这个算法无法考虑到所有的情形,所以在某一些的场景中是十分有效,但适用性不广。下面就是这个算法的一个实例应用。
求一个数组中的所有子组中最大的一个。例如:-1,2,5,3,-2,5,-3中最大的子组和为2,5,3,-2,5这个子组。下面就给出这个算法的实现代码,代码异常简单,但是设计思想非常狡猾。
int GetMax(int m,int n){ return m>n?m:n; }
int MaxSubArray(int array[],int length){ int maxendhere = 0; int maxsofar=0; for(int i = 0;i < length;i++){ maxendhere = GetMax(maxendhere + array[i] ,0);// 求出了数组中a[i]之前的最优子组
maxsofar = GetMax(maxendhere ,maxsofar); // 从子组中获得最大的子组 } return maxsofar; }
相关文章推荐
- iOS 视频相关
- Linux下perl文件的执行
- U3d菜单栏变化:Camera的Smooth Follow属性位置,U3d自带地势资源包的导入,天空盒设置
- 62、Java基础之数组
- jQuery deferred的实践,ajax请求增加缓存处理
- IOS Quartz2D简介
- Objective-C Runtime之着魔的UIAlertView
- 编程书籍推荐
- 新手理解@classmethod及@staticmethod
- 其他
- 写于2016年4月
- 关于getContext()、getApplication()、getApplicationContext()、getActivity()的区别
- 取消代码中的注释
- Acdroid 波浪按钮 rippleview
- LeetCode 23. Merge k Sorted Lists
- apache-jmeter学习文档
- 在Mac上安装MongoDB
- VS断点失效时候的处理
- PHP 时间 date,strtotime ,time计算1970开始的第几天
- android录音时弹出权限选择框影响录音动画显示问题