leetcode53. Maximum Subarray (简单dp)

来源:互联网 发布:linux中怎么创建文件 编辑:程序博客网 时间:2024/06/05 01:10

题意:

给你一个序列,求价值最大的连续序列。

思路:

dp,

状态方式:dp[i]表示以下标为i的元素为结尾的价值最大的连续序列。

状态转移方程:dp[i] = max(dp[i-1]+nums[i],nums[i]),,,,,下标为i的元素自成一个序列,或者加上以i-1为结尾的价值最大的连续序列。

代码:

class Solution {public:    int maxSubArray(vector<int>& nums) {        int n = nums.size();        if(n==0)            return 0;        int dp[n];        int maxx = nums[0];        dp[0] = nums[0];        for(int i = 1;i<n;i++)        {            dp[i] = max(nums[i],dp[i-1]+nums[i]);            maxx = max(maxx,dp[i]);        }        return maxx;    }};