数组代码:
public class Maxsum {
public int Max(int Array[],int size){
int max=Array[0];
int num;
int sum=max;
for(num=1;num<size;num++)
{
if(sum<0)
sum=Array[num];
else
sum+=Array[num];
if(sum>max)
max=sum;
}
return max;
}
public static void main(String[] args){
Maxsum sum=new Maxsum();
Scanner in=new Scanner(System.in);
int size=in.nextInt();
int []Array=new int[size];
int num;
for(num=0;num<size;num++)
Array[num]=in.nextInt();
System.out.println(sum.Max(Array,size));
in.close();
}
}
测试用例代码:
public class MaxsumTest {
Maxsum sum=new Maxsum();
@Before
public void setUp() throws Exception {
}
@After
public void tearDown() throws Exception {
}
@Test
public void testMax1() {
int []Array=new int[]{1,-2,4,-1,-5};
assertEquals(4, sum.Max(Array,5));
}
@Test
public void testMax2() {
int []Array=new int[]{1,-2,-4,1,5};
assertEquals(6, sum.Max(Array,5));
}
@Test
public void testMax3() {
int []Array=new int[]{1,2,3,1,1};
assertEquals(8, sum.Max(Array,5));
}
@Test
public void testMax4() {
int []Array=new int[]{-1,-2,-4,-1,-5};
assertEquals(-1, sum.Max(Array,5));
}
@Test
public void testMax5() {
int []Array=new int[]{0,0,0,0,0};
assertEquals(0, sum.Max(Array,5));
}
}
测试用例:
代码截图:
运行截图: