#include
using namespace std ;
int main() {
int n , a[100] , dp[100] ;
cin >> n ;
for(int i = 0 ; i < n ; i++)
cin >> a[i] ;
dp[0] = a[0] ;
for(int i = 1 ; i < n ; i++)
dp[i] = dp[i-1] > 0 ? dp[i-1] + a[i] : a[i] ; //动态方程见图解
int MAX = - 1 << 30 ;
for(int i = 0 ; i < n ; i++)
MAX = max(MAX,dp[i]) ;
cout << MAX << endl ;
return 0 ;
}
本文介绍了一种求解连续子序列最大和的算法,通过动态规划方法解决给定序列中连续子序列的最大和问题。示例代码展示了如何计算如{-2,11,-4,13,-5}
4519

被折叠的 条评论
为什么被折叠?



