问题描述:给定一个整数数组nums,找到一个具有最大和的连续子数组(子数组最少含有一个元素),返回其最大和。
动态规划求解:定义dp[i]表示以i元素为结尾的最大和,如果dp[i-1]小于零的话,dp[i]=nums[i],否则dp[i]=nums[i]+dp[i-1];
public getMaxSubNum(int [] nums)
{
int dp[]=new int[nums.length];
dp[0]=nums[0];
for(int i=1;i<nums.length;i++)
{
if(dp[i-1]<=0)
{
dp[i]=nums[i];
}else
{
dp[i]=dp[i-1]+nums[i];
}
}
Arrays.sort(dp);
return dp[dp.length-1];
}