1. 程式人生 > 其它 >java小測試(返回一個整數陣列中最大子陣列的和)

java小測試(返回一個整數陣列中最大子陣列的和)

  今天進行了一個java小測試,測試內容為返回一個整數陣列中最大子陣列的和。

  思路為(在我們班大佬的講解下做出來的):假設有x個整數,整數中有正數和負數,存放在一個數組num[]中。在定義一個新陣列a【】,表示從下表為0到下表為i的子陣列的最大和,從0開始往後面走,知道前i-1個子陣列的最大和,判斷第i個整數,如果為負數,a【】中存放為0,為正數,則把a[i-1]+num[i]存放在a[i]中,這樣就是a【】陣列中存放的都是子陣列的最大和,最後在a[]中找到最大的。

  原始碼:

public static void main(String[] args ) {
int num[]= {1,2,-3,4,-5,-7,-3,5} ;
int add[]={0,0,0,0,0,0,0,0};
int max;
int i=0;
int length=num.length;
add[0]=num[0];
for(i=1;i<length;i++) {
if(num[i]<0) {
add[i]=0;
}else {
add[i]=num[i]+add[i-1];
}
}
max=add[0];
for(i=0;i<length-1;i++) {
if(add[i+1]>max) {
max=add[i+1];
}
}
System.out.print(max);
}

 

這樣感覺還是有問題,比如如果陣列為1,2,-1,4  ,那麼判斷-1對應的位置為0,從-1截斷,4不加前面的數,但是1+2-1+4=6,是比單純的4大的,而且當陣列中有0的時侯判斷也不準確。這還需要進一步完善。