問題描述:給定一個整數數組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];
}