java求非降序所有子序列中的最大和,程序写了,但是不对,求高手

来源:百度知道 编辑:UC知道 时间:2024/09/21 17:40:05
import java.util.*;
public class MaxUpsequence
{
public static void main(String [] args)
{
MaxUpsequence mySeq = new MaxUpsequence();
int [] myArray = {2,3};
System.out.println(mySeq.maxSeqValue(myArray));}

public int maxSeqValue(int [] a)
{
int n=a.length;
if(n==0)
return 0;
int[] sum=new int[n];
if(a[0]>=0)
sum[0]=a[0];
else
sum[0]=0;
for(int i = 1;i<n;i++)
{
sum[i]=sum[0];
for(int j=0;j<i;j++)
{
if(a[j]<=a[i]&&sum[j]>=sum[i]-sum[0]&&a[i]>0)

sum[i]=sum[j]+a[i];
}
}
Arrays.sort(sum);
return sum[n-1];
}
}

返回值不对

这题应该返回19,因为和最大的非降序子序列是2,3,14

但是我运行的结果是20

求高手帮忙看下!!
上面写错了一

import java.util.*;
public class MaxUpsequence
{
public static void main(String [] args)
{
MaxUpsequence mySeq = new MaxUpsequence();
int [] myArray = {-11,2,-11};
System.out.println(mySeq.maxSeqValue(myArray));}

public int maxSeqValue(int [] a)
{
int sum= 0,tempSum= 0;

if (a.length ==0)
return Integer.MIN_VALUE;

else if(a.length >=1)
{
sum = a[0];
tempSum = a[0];
for(int i= 1;i<a.length;i++)
{
if(a[i]<a[i-1])
{
tempSum=0;
}

tempSum += a[i];

if(tempSum > sum )
sum = tempSum;

else if (tempSum<0)
tempSum= 0;
}
}

return sum;
}
}

你的程序思路太麻烦了,给你写个简单的

在return 前面加一个判断赋值语句