最长子段问题 .txt

来自「算法设计与分析源代码算法设计与分析源代码」· 文本 代码 · 共 32 行

TXT
32
字号
#include<iostream> 
#include<algorithm> 
using namespace std; 
int a[31],b[31]; 
void main() 
{ 
int n; 
cin>>n; 
for(int i=1;i<=n;i++) 
cin>>a[i]; 
b[1]=a[1]>0?a[1]:0;//b[i]用以纪录以a[i]为最后元素的最大子段和,此题最终要求max{b[i]},1<=i<=n; 

for(i=2;i<=n;i++) 
{ 
if(b[i-1]==0) 
{ 
 b[i]=a[i]>0?a[i]:0; 
} 
else 
{ 
if(a[i]+b[i-1]>0) 
b[i]=a[i]+b[i-1]; 
else 
b[i]=0; 
} 
} 

cout<<*max_element(b+1,b+1+n)<<endl; 
}  
 
 

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?