连续子段的最大和

#include<iostream>
using namespace std;
int main()
{
    int n;
    while (cin >> n)
    {
        int num[10000];                    
        for (int i = 1; i <= n; i++)
        {
            cin >> num[i];
        }
        int dp[10000];                    
                          
        for (int i = 1; i <= n; i++)
        {
            dp[i] = 0;
        }
        dp[1] = num[1];
        for (int i = 2; i <= n; i++)
        {
            dp[i] = max(dp[i - 1] + num[i], num[i]);            
        }
        int ans = dp[1];                                    
        for (int i = 2; i <= n; i++)
        {
            if (dp[i] > ans)   ans = dp[i];
        }
        cout << ans << endl;
    }
    return 0;
}

 

posted @ 2023-03-22 22:12  刘海烽  阅读(20)  评论(0)    收藏  举报