最大子数组
来源:互联网 发布:如何去日本工作知乎 编辑:程序博客网 时间:2024/05/21 06:45
最近开始看算法导论,看一点就写一点,必须提高自己的编程能力,毕竟要养活我将来的老婆(现在还在当兵的女朋友)。第一次写,都是简单的老掉牙的题目。求谅解。另外算法导论(第三版第38页)有对此题目的另一个解法(分治法),我看着伪代码写了许久,但没运行出来,求诸位大神们指教!好了,废话不多说了。开始看题目。
题目:输入一个整型数组,数组里有正数也有负数。数组中一个或连续的多个整数组成一个子数组。求所有子数组的和的最大值。要求时间负责度为O(n)。
思路:就是动态规划啦 从数组第一个元素开始逐个加,和如果是负数就舍弃,和(nowsum)为正的话,就将此次的和(nowsum)与前一次算的和(sum)比较,nowsum>sum的话,就将nowsum赋值给sum。从而保证sum是最大子数组的和。
代码如下:
void main (){
int A[]={13,-3,-25,20,-3,-16,-23,18,20,-7,12,-5,-22,15,-4,7};
//全是负数的话就是求最大的一个元素 代码没写
//动态规划做 用分治法没运行出来
int i,j,sum=0;
int nowsum=0;
for(i=0;i<(sizeof(A)/sizeof(int));i++)
{
nowsum+=A[i];
if (nowsum<0) {
nowsum=0;
}
if(sum<nowsum){
sum=nowsum;
}
}
printf("%d\n",sum);
}
0 0
- 求最大子数组
- 求最大子数组
- 子数组和最大
- 求最大子数组
- 最大子数组
- 最大子数组和
- 最大子数组和
- 子数组最大和
- 子数组最大乘积
- 最大子数组
- 最大子数组乘积
- 最大子数组和
- 子数组最大和
- 子数组最大和
- 最大子数组二
- 最大连续子数组
- 最大子数组问题
- 最大子数组算法
- dos命令运行sqlite3查看android中的sqlite文件是否有数据
- cocos2d-x 懒人专用宏介绍
- 用1 2 5三个数不同个数的组合的和为100的组合
- windows 系统资源获取的c++ 方法
- CentOS 网卡驱动安装
- 最大子数组
- 生活流水账(转载老婆的文章)
- USACO打怪升级(二): TEXT Submitting Solutions
- c函数之【错误处理函数】
- 从JSON取数据实现图片瀑布流布局的数据动态加载
- 三维旋转的四元数表示方法的解释
- Linux下svn的安装和使用(1)
- 适配器模式&观察者模式
- LeetCode :: Linked List Cycle I and II