﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-付翔的专栏-随笔分类-数据结构与算法分析 C++ 描述</title><link>http://www.cppblog.com/397993401/category/14033.html</link><description>在鄙视中成长 记录成长的点滴</description><language>zh-cn</language><lastBuildDate>Sun, 13 Jun 2010 15:27:12 GMT</lastBuildDate><pubDate>Sun, 13 Jun 2010 15:27:12 GMT</pubDate><ttl>60</ttl><item><title>求最大子序列 </title><link>http://www.cppblog.com/397993401/archive/2010/06/13/117829.html</link><dc:creator>付翔</dc:creator><author>付翔</author><pubDate>Sun, 13 Jun 2010 15:19:00 GMT</pubDate><guid>http://www.cppblog.com/397993401/archive/2010/06/13/117829.html</guid><wfw:comment>http://www.cppblog.com/397993401/comments/117829.html</wfw:comment><comments>http://www.cppblog.com/397993401/archive/2010/06/13/117829.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/397993401/comments/commentRss/117829.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/397993401/services/trackbacks/117829.html</trackback:ping><description><![CDATA[<br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000;">#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">iostream</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br>#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">vector</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br></span><span style="color: #0000ff;">using</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">namespace</span><span style="color: #000000;">&nbsp;std;<br></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;max3(&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;a,&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;b,&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;c&nbsp;)<br>{<br></span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;a&nbsp;</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;b&nbsp;</span><span style="color: #000000;">?</span><span style="color: #000000;">&nbsp;a&nbsp;</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;c&nbsp;</span><span style="color: #000000;">?</span><span style="color: #000000;">&nbsp;a&nbsp;:&nbsp;c&nbsp;:&nbsp;b&nbsp;</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;c&nbsp;</span><span style="color: #000000;">?</span><span style="color: #000000;">&nbsp;b&nbsp;:&nbsp;c;<br>}<br><br></span><span style="color: #008000;">/*</span><span style="color: #008000;">*&nbsp;分治法求最大子序列<br>&nbsp;*&nbsp;Recursive&nbsp;maximum&nbsp;contiguous&nbsp;subsequence&nbsp;sum&nbsp;algorithm.<br>&nbsp;*&nbsp;Finds&nbsp;maximum&nbsp;sum&nbsp;in&nbsp;subarray&nbsp;spanning&nbsp;a[left..right].<br>&nbsp;*&nbsp;Does&nbsp;not&nbsp;attempt&nbsp;to&nbsp;maintain&nbsp;actual&nbsp;best&nbsp;sequence.<br>&nbsp;</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;maxSumRec(&nbsp;</span><span style="color: #0000ff;">const</span><span style="color: #000000;">&nbsp;vector</span><span style="color: #000000;">&lt;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">&nbsp;a,&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;left,&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;right&nbsp;)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(&nbsp;left&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;right&nbsp;)&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;Base&nbsp;case</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(&nbsp;a[&nbsp;left&nbsp;]&nbsp;</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;a[&nbsp;left&nbsp;];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;center&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;(&nbsp;left&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;right&nbsp;)&nbsp;</span><span style="color: #000000;">/</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;maxLeftSum&nbsp;&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;maxSumRec(&nbsp;a,&nbsp;left,&nbsp;center&nbsp;);<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;maxRightSum&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;maxSumRec(&nbsp;a,&nbsp;center&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">,&nbsp;right&nbsp;);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;maxLeftBorderSum&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">,&nbsp;leftBorderSum&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;(&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;center;&nbsp;i&nbsp;</span><span style="color: #000000;">&gt;=</span><span style="color: #000000;">&nbsp;left;&nbsp;i</span><span style="color: #000000;">--</span><span style="color: #000000;">&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;leftBorderSum&nbsp;</span><span style="color: #000000;">+=</span><span style="color: #000000;">&nbsp;a[&nbsp;i&nbsp;];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(&nbsp;leftBorderSum&nbsp;</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;maxLeftBorderSum&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxLeftBorderSum&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;leftBorderSum;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;maxRightBorderSum&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">,&nbsp;rightBorderSum&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;(&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;j&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;center&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;&nbsp;j&nbsp;</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">&nbsp;right;&nbsp;j</span><span style="color: #000000;">++</span><span style="color: #000000;">&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rightBorderSum&nbsp;</span><span style="color: #000000;">+=</span><span style="color: #000000;">&nbsp;a[&nbsp;j&nbsp;];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(&nbsp;rightBorderSum&nbsp;</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;maxRightBorderSum&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxRightBorderSum&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;rightBorderSum;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;max3(&nbsp;maxLeftSum,&nbsp;maxRightSum,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxLeftBorderSum&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;maxRightBorderSum&nbsp;);<br>}<br><br></span><span style="color: #008000;">/*</span><span style="color: #008000;">*<br>&nbsp;*&nbsp;Driver&nbsp;for&nbsp;divide-and-conquer&nbsp;maximum&nbsp;contiguous<br>&nbsp;*&nbsp;subsequence&nbsp;sum&nbsp;algorithm.<br>&nbsp;</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;maxSubSum3(&nbsp;</span><span style="color: #0000ff;">const</span><span style="color: #000000;">&nbsp;vector</span><span style="color: #000000;">&lt;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">&nbsp;a&nbsp;)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;maxSumRec(&nbsp;a,&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">,&nbsp;a.size(&nbsp;)&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">&nbsp;);<br>}<br><br></span><span style="color: #008000;">/*</span><span style="color: #008000;">*<br>&nbsp;*&nbsp;Linear-time&nbsp;maximum&nbsp;contiguous&nbsp;subsequence&nbsp;sum&nbsp;algorithm.<br>&nbsp;</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;maxSubSum4(&nbsp;</span><span style="color: #0000ff;">const</span><span style="color: #000000;">&nbsp;vector</span><span style="color: #000000;">&lt;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">&nbsp;a&nbsp;)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;maxSum&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">,&nbsp;thisSum&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;(&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;j&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;&nbsp;j&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;a.size(&nbsp;);&nbsp;j</span><span style="color: #000000;">++</span><span style="color: #000000;">&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;thisSum&nbsp;</span><span style="color: #000000;">+=</span><span style="color: #000000;">&nbsp;a[&nbsp;j&nbsp;];<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(&nbsp;thisSum&nbsp;</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;maxSum&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxSum&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;thisSum;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(&nbsp;thisSum&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;thisSum&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;maxSum;<br>}<br></span><span style="color: #008000;">/*</span><span style="color: #008000;"><br>最大正子序列&nbsp;所有的sub&nbsp;都为正数<br></span><span style="color: #008000;">*/</span><span style="color: #000000;"><br></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;maxSubPositiveSum(&nbsp;</span><span style="color: #0000ff;">const</span><span style="color: #000000;">&nbsp;vector</span><span style="color: #000000;">&lt;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">&nbsp;a)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;maxSum&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">,&nbsp;thisSum&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">,i;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">bool</span><span style="color: #000000;">&nbsp;isPositive[</span><span style="color: #000000;">8</span><span style="color: #000000;">];<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;(i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">&nbsp;;i&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">8</span><span style="color: #000000;">&nbsp;;&nbsp;i&nbsp;</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;isPositive[i]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;a[i]</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">0</span><span style="color: #000000;">?</span><span style="color: #0000ff;">true</span><span style="color: #000000;">:</span><span style="color: #0000ff;">false</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;(&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;j&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;&nbsp;j&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;a.size(&nbsp;);&nbsp;j</span><span style="color: #000000;">++</span><span style="color: #000000;">&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(&nbsp;isPositive[j])<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;thisSum&nbsp;</span><span style="color: #000000;">+=</span><span style="color: #000000;">&nbsp;a[&nbsp;j&nbsp;];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(&nbsp;thisSum&nbsp;</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;maxSum&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxSum&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;thisSum;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(&nbsp;thisSum&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;thisSum&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(</span><span style="color: #000000;">!</span><span style="color: #000000;">isPositive[j]&nbsp;&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;thisSum&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;maxSum;<br>}<br></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;main(&nbsp;)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;vector</span><span style="color: #000000;">&lt;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;a(&nbsp;</span><span style="color: #000000;">8</span><span style="color: #000000;">&nbsp;);<br>&nbsp;&nbsp;&nbsp;&nbsp;a[&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">&nbsp;]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">4</span><span style="color: #000000;">;a[&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">&nbsp;]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">3</span><span style="color: #000000;">;a[&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">&nbsp;]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">5</span><span style="color: #000000;">;a[&nbsp;</span><span style="color: #000000;">3</span><span style="color: #000000;">&nbsp;]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">2</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;a[&nbsp;</span><span style="color: #000000;">4</span><span style="color: #000000;">&nbsp;]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">;a[&nbsp;</span><span style="color: #000000;">5</span><span style="color: #000000;">&nbsp;]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">;a[&nbsp;</span><span style="color: #000000;">6</span><span style="color: #000000;">&nbsp;]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">6</span><span style="color: #000000;">;a[&nbsp;</span><span style="color: #000000;">7</span><span style="color: #000000;">&nbsp;]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">2</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;maxSum,i;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;maxSum&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;maxSubSum3(&nbsp;a&nbsp;);<br>&nbsp;&nbsp;&nbsp;&nbsp;cout&nbsp;</span><span style="color: #000000;">&lt;&lt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">Max&nbsp;sum&nbsp;is&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">&lt;&lt;</span><span style="color: #000000;">&nbsp;&nbsp;maxSum&nbsp;</span><span style="color: #000000;">&lt;&lt;</span><span style="color: #000000;">&nbsp;endl;<br>&nbsp;&nbsp;&nbsp;&nbsp;maxSum&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;maxSubPositiveSum(&nbsp;a&nbsp;);<br>&nbsp;&nbsp;&nbsp;&nbsp;cout&nbsp;</span><span style="color: #000000;">&lt;&lt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">Max&nbsp;sum&nbsp;is&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">&lt;&lt;</span><span style="color: #000000;">&nbsp;&nbsp;maxSum&nbsp;</span><span style="color: #000000;">&lt;&lt;</span><span style="color: #000000;">&nbsp;endl;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br>}<br></span></div>
<br><br><img src ="http://www.cppblog.com/397993401/aggbug/117829.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/397993401/" target="_blank">付翔</a> 2010-06-13 23:19 <a href="http://www.cppblog.com/397993401/archive/2010/06/13/117829.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>