最大子段和(c++)
2016-02-26 13:37
337 查看
// 最大子段和.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include<iostream> using namespace std; int MaxSum_test(int v[], int l, int r) { int k,sum = 0; if (l ==r) { return v[l] >= 0 ? v[l]:0; } else { int center = (l+ r) / 2; int lsum = MaxSum_test(v, l, center); int rsum = MaxSum_test(v, center + 1, r); int s1 = 0; int lefts = 0; for (k = center; k >= l; k--) { lefts += v[k]; if (lefts>s1) s1 = lefts; } int s2 = 0; int rights = 0; for (k = center + 1; k <= r; k++) { rights += v[k]; if (rights>s2) s2 = rights; } sum = s1 + s2; if (sum<lsum) sum = lsum; if (sum<rsum) sum = rsum; } return sum; } int _tmain(int argc, _TCHAR* argv[]) { int arr[6] = { -20, 11, -4, 13, -5, -2 }; cout <<"最大子段长度为:"<< MaxSum_test(arr, 0, 5) << endl; return 0; } |
相关文章推荐
- C++阻塞队列实现
- C语言内存四区
- C语言实现链表的逆序打印
- VC++中DLL(动态链接库)使用的若干问题
- [置顶] c语言入门项目之4.4——利用“迭代”求运算
- C++Primer第5版读书笔记(第3章)
- C/C++数据类型总结
- android调用c/c++基本步骤
- C语言中文件打开模式(r/w/a/r+/w+/a+/rb/wb/ab/rb+/wb+/ab+)浅析
- C++习题2——栈(简单)
- 《Effective C++》考虑virtual函数以外的其他选择
- C/C++学习建议(摘抄自:程序员2010年8月P61页)
- C语言复习提高面试百题
- C++ dll调用-动态(显式)
- C语言之——CRC-64算法
- C语言宏定义和宏定义函数
- C语言中 \ 的作用
- C++解析xml、json、ini
- [C][C++]长度、大小等的详解:sizeof, strlen, size...
- 1058. A+B in Hogwarts (20)