AS 数组内两个最大的和

public class Arrays {
int MaxSubArray(int[] A, int n)
{
int maxSum =A[0];
int currSum = 0;
for (int i = 0; i < n; i++)
{
for (int j = i; j < n; j++)
{
for (int k = i; k <= j; k++)
{
currSum += A[k];
}
if (currSum > maxSum)
maxSum = currSum;

currSum = 0; //这里要记得清零,否则的话sum最终存放的是所有子数组的和。
}
}
return maxSum;
}
}

 

 

 

public class ArraysTest {

private Arrays Array;

@Before
public void setUp() throws Exception {
Array = new Test2();
}

@Test
public void maxSubArray() throws Exception {
int []array1={-1,2,9,-4};
assertEquals(11d,Array.MaxSubArray(array1,array1.length),4);

int []array2={-1,2,3,3,-4};
assertEquals(8d,Array.MaxSubArray(array2,array2.length),5);

int []array3={-1,20,10,30,-4};
assertEquals(60d,Array.MaxSubArray(array3,array3.length),5);

int []array={-2,-3,-5,-1,-9};
assertEquals(-1d,Array.MaxSubArray(array,array.length),5);
}
}

posted on 2017-03-17 22:37  请叫我少爷  阅读(113)  评论(0编辑  收藏  举报

导航