标签:
给出一个数组,求其最大子数组和(要求最少取一个元素)
主要是用动态规划法,用dp(n)表示从0到n之间的最大子数组和。其状态转移方程为dp(n)=dp(n-1)<0?array[n] : dp(n-1)+array[n]
代码如下:
class Solution { public: int maxSubArray(vector<int>& nums) { int res = numeric_limits<int>::min(); int sum = 0; int size = nums.size(); for (int i = 0; i < size; i++) { if (sum > 0) sum += nums.at(i); else sum = nums.at(i); res = max(res, sum); } return res; } };
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:
原文地址:http://blog.csdn.net/xiexingshishu/article/details/48207451