leetcode 最大子序和

状态:dp[i]表示以第i个元素结尾的连续子数组的最大和

状态转移方程:

dp[i] = max( 0, dp[i-1] ) + nums[i];

#include <vector>
using namespace std;
class Solution
{
public:
    int maxSubArray(vector<int>& nums)
    {
        int n = nums.size();
        vector<int> dp(n+1,0);
        if( nums[0] > 0 )
            dp[0] = nums[0];
        else
            dp[0] = 0;
       for( int i = 1; i < n; i++ )
       {
           dp[i] = max( 0, dp[i-1] ) + nums[i];
       }
       int ans = dp[0];
       for( int i = 0; i < n; i++ )
        ans = min( ans, dp[i] );
       return ans;
    }
};

猜你喜欢

转载自blog.csdn.net/xutian_curry/article/details/80464815