#include <string.h>
#include"iostream"
using namespace std;
int main(){
int a[1000];
int n;
cin>>n;
for(int i=0;i<n;i++){
cin>>a[i];
}
int temp=0;
int ans=0; //全为负数,初值为零
for(i=0;i<n;i++){
/**判断前面加起来的数,有没有新加入的大,
没有就舍弃(取现在的值从这个数开始重新计算),有就继续累加,相当于子串连续计算
*/
temp=(temp+a[i])>a[i]?(temp+a[i]):a[i];
if(ans<temp) //
ans=temp;
}
cout<<"最大子段和为:"<<ans<<endl;
return 0;
}
最大字段和--动态规划
最新推荐文章于 2023-01-25 11:48:48 发布