随手小代码——最大子数组 联机算法
2015-08-09 14:28
337 查看
=================================版权声明=================================
[b]版权声明:本文为博主原创文章 未经许可不得转载
[/b]
请通过右侧公告中的“联系邮箱(wlsandwho@foxmail.com)”联系我
未经作者授权勿用于学术性引用。
未经作者授权勿用于商业出版、商业印刷、商业引用以及其他商业用途。
本文不定期修正完善,为保证内容正确,建议移步原文处阅读。 <--------总有一天我要自己做一个模板干掉这只土豆
本文链接:/article/5266596.html
耻辱墙:/article/5266550.html
=======================================================================
改进了一下,记录最大子数组的下标。
不知道是不是能用。
=======================================================================
=======================================================================
[b]版权声明:本文为博主原创文章 未经许可不得转载
[/b]
请通过右侧公告中的“联系邮箱(wlsandwho@foxmail.com)”联系我
未经作者授权勿用于学术性引用。
未经作者授权勿用于商业出版、商业印刷、商业引用以及其他商业用途。
本文不定期修正完善,为保证内容正确,建议移步原文处阅读。 <--------总有一天我要自己做一个模板干掉这只土豆
本文链接:/article/5266596.html
耻辱墙:/article/5266550.html
=======================================================================
改进了一下,记录最大子数组的下标。
不知道是不是能用。
=======================================================================
#include "stdafx.h" #include <intsafe.h> #include <iostream> using namespace std; int LinearFindMaxSubArray(int nArray[], int nLen, int& nMaxLeftIndex, int& nMaxRightIndex) { int nMaxSum = 0; int nSum = 0; for (int nIndex = 0;nIndex < nLen;nIndex++) { nSum += nArray[nIndex]; if (nSum > nMaxSum) { nMaxSum = nSum; nMaxRightIndex = nIndex; } else if (nSum < 0) { nSum = 0; nMaxLeftIndex = nIndex + 1; } } return nMaxSum; } int main() { int nArr[16] = { 13,-3,-25,20,-3,-16,-23,18,20,-7,12,-5,-22,15,-4,7 }; int nMaxLeftIndex = 0; int nMaxRightIndex = 0; int nMaxSum = LinearFindMaxSubArray(nArr,16, nMaxLeftIndex, nMaxRightIndex); cout << "nArr[" << nMaxLeftIndex << "..." << nMaxRightIndex << "] = " << nMaxSum << endl; // int nArr[10] = { -2, 11, -4, 13, -5, 2, -5, -3, 12, -9 }; // // int nMaxLeftIndex = 0; // int nMaxRightIndex = 0; // int nMaxSum = LinearFindMaxSubArray(nArr, 9, nMaxLeftIndex, nMaxRightIndex); // // cout << "nArr[" << nMaxLeftIndex << "..." << nMaxRightIndex << "] = " << nMaxSum << endl; return 0; }
=======================================================================
相关文章推荐
- 我的编程之路(二十八) 回首2014
- 2015/8/9 到家了,学完了CodeCademy的Python
- Spring基于自定义注解的用户认证
- Spring实现定时任务
- 如何在需求不断改变的情况下愉快的写代码
- 浅析Java中的final关键字
- 开发工具之MyEclipse用法基本总结(断点测试,快捷键,Junit测试)
- C语言:串匹配的一般方法
- c++ socket
- java.lang.IllegalStateException:Unable to initialise endpoint. A previous call to init() failed. See
- ASP.NET MVC5(1)返回字符串+路由解析设置
- 单件模式的经典代码
- 第五十九届冠军(使用C++设计一个类不能被继承)
- Matlab平台下Nvidia显卡和Intel I7 CPU的并行计算性能比较:第一次测试
- struts工作原理
- python学习笔记1.2
- Paramics插件编程进程间通讯
- 搭建SpringMVC框架
- Zend Guard 6 使用教程
- JAVA中的树的遍历