java數組中最大的子數組之和


一個有N個整數元素的一維數組,那么子數組之和的最大值是什么?

例如:-2 5 3 -6 4 -8 6 maxsum=8

無論是高中學習c語言還是現在的Java,首先想法是就是找出所有的子數組,重復計算,然后求其和,取最大。
int Maxsum1(int *array,int n)
{
int max=-INF;
int sum;
int i,j;
for(i=0;i<n;i++) {="" sum="0;" for(j="i;j<n;j++)" sum+="array[j];" if(sum="">max)
max=sum;
}
}
return max;
}
</n;i++)>

還有一種想法,累加。重復累加,只要大於0,就說明當前的“和”可以繼續增大,如果小於0了,說明“之前的最大和”已經不可能繼續增大了,就從新開始。
int Maxsum3(int *array,int n)
{
int max=-INF;
int sum=0;
for(int i=0;i<n;i++) {="" if(sum<0)="" sum="array[i];" else="" sum+="array[i];" if(sum="">max)
max=sum;
}
return max;
}
</n;i++)>

附網絡上高端的動態規划求解
2個數組的
更短的

真正接受的思路:
從左邊開始,在這個過程中記錄一個當前子數組的最大值,前幾項小於零時則刷新所有數據,從后面一個數重新開始,當發現累加結構大於記錄的最大值時,則替換,最后比較完后,記錄的最大值就為真實的最大值。

感謝各位網絡技術好人的分享==


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM