编程之美: 第二章 数字之魅 2.14求数组的子数组之和的最大值
2015-08-03 01:03
267 查看
/* 求数组的子数组之和的最大值: 一个由N个整数元素的数组,这个数组有很多子数组,子数组之和的最大值是什么? f(n) = {f(n-1) + pArr[i],f(n-1)>0 {pArr[i],f(n-1)<=0 输入: 7 -2 5 3 -6 4 -8 6 6 0 -2 3 5 -1 2 6 1 -2 3 5 -3 2 5 -9 -2 -3 -5 -3 输出: 8 9 8 -2 */ #include <stdio.h> const int MAXSIZE = 10000; const int INF = 0x7fffffff; int maxSum(int* pArr,int iLen) { if(!pArr || iLen <= 0) { return INF; } int iSum = 0,iMax = pArr[0]; for(int i = 0 ; i < iLen ; i++) { if(iSum <= 0) { iSum = pArr[i]; } else { iSum += pArr[i]; } if(iSum > iMax) { iMax = iSum; } } return iMax; } void process() { int n; while(EOF != scanf("%d",&n)) { int iArr[MAXSIZE]; for(int i = 0 ; i < n ; i++) { scanf("%d",&iArr[i]); } printf("%d\n",maxSum(iArr,n)); } } int main(int argc,char* argv[]) { process(); getchar(); return 0; }
相关文章推荐
- Struts2开发环境搭建
- 编程之美: 第二章 数字之魅 2.11寻找最近点对
- 编程之美:第三章 结构之法 3.11程序改错
- 编程之美:第二章 数字之魅 2.13子数组的最大乘积
- 编程之美: 第二章 数字之魅 2.16求数组中最长递增子序列
- 编程之美:第二章 数字之魅 2.15子数组之和的最大值(二维)
- 编程之美:第二章 数字之魅 2.19区间重合判断
- 编程之美:第二章 数字之魅 2.17数组循环移位
- 编程之美:第二章 数字之魅 2.20程序理解和时间分析
- 编程之美:第三章 结构之法 3.9重建二叉树
- Java_链表实现
- 编程之美:第三章 结构之法 3.10分层遍历二叉树
- 编程之美: 第三章 结构之法 3.2电话号码对应英语单词
- 编程之美:第三章 结构之法 3.8求二叉树中结点的最大距离
- 编程之美:第三章 结构之法 3.3计算字符串的相似度
- 编程之美:第三章 结构之法 3.4从无头单链表中删除节点
- 编程之美:第三章 结构之法 3.7队列中取最大值操作问题
- Python操作Excel实践总结
- google 笔试题: 丑数
- 编程之美:第三章 结构之法 3.6编程判断两个链表是否交叉