博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
最大子序列和问题的解——C++实现;
阅读量:6678 次
发布时间:2019-06-25

本文共 2176 字,大约阅读时间需要 7 分钟。

hot3.png

195708_hMfi_2669173.bmp

#include 
#include 
using namespace std;//线性算法int maxSubSum1(const vector
& a){    int maxSum, thisSum, i = 0;    if (a[0] < 0)    {        maxSum = a[0];        i++;        while (i < a.size())        {            if (a[i] < 0)            {                maxSum = (maxSum > a[i] ? maxSum : a[i]);                i++;            }            else                break;                       }    }    if (i < a.size())    {        maxSum = a[i];        thisSum = a[i];        i++;        while (i < a.size())        {            if (a[i] > 0)            {                if (thisSum > 0)                {                    thisSum += a[i];                    maxSum = (maxSum > thisSum ? maxSum : thisSum);                    i++;                }                else                {                   thisSum = a[i];                   maxSum = (maxSum > thisSum ? maxSum : thisSum);                   i++;                }            }            else            {                if (thisSum > 0)                {                    if (thisSum + a[i] < 0)                    {                        thisSum = a[i];                        i++;                    }                    else                    {                        thisSum += a[i];                        i++;                    }                     }                else                {                    thisSum += a[i];                    i++;                }            }        }       return maxSum;    }    else    {        return maxSum;    }   }//穷举算法 时间复杂度为N的平方int maxSubSum2(const vector
& a){    int maxSum = a[0], thisSum;    for (int i = 0; i < a.size(); i++)    {        thisSum = 0;        for (int j = i; j < a.size(); j++)        {            thisSum += a[j];            maxSum = (maxSum > thisSum ? maxSum : thisSum);        }    }    return maxSum;   }//验证函数int main(){    vector
 a = { 4, -3, 5, -2, -1, 2, 6, -2};//放入任意int数据    cout << maxSubSum1(a) << endl         << maxSubSum2(a) << endl;    cin.get();    return 0;}

运行结果为

203950_X3Zt_2669173.png

转载于:https://my.oschina.net/kuailechengxuyuan/blog/651023

你可能感兴趣的文章
Silverlight 如何手动打包xap
查看>>
VMware-workstation安装
查看>>
vue 开发2017年变化回顾及2018年展望
查看>>
利用FluorineFX录制音频与视频
查看>>
web api 文档声明
查看>>
Ubuntu下配置 keepalived+nginx+tomcat 负载均衡
查看>>
ffmpeg对rtmp的基本操作[转]
查看>>
iframe嵌入页面不能全部展示
查看>>
PHP 流程
查看>>
angular 自定义指令详解
查看>>
自写 zTree搜索功能 -- 关键字查询 -- 递归无限层
查看>>
软件工程——四则运算3(C#)
查看>>
我的软考之路(八)——三大原则学会数据流图
查看>>
Grails开发环境的高速搭建
查看>>
jQuery Ajax遍历表格,填充数据,将表格中的数据一条一条拼成Jason数组
查看>>
Redis为什么这么快
查看>>
js获取宽度设置thickbox百分比
查看>>
检测输入框字数的变化 注意onpropertychange oninput onchange onkeyup区别
查看>>
arm_GPIO_简单编程例题
查看>>
codves1282 约瑟夫问题 链表 会 T
查看>>