Packagecom.dongbin.test;/*** Maximum sub-sequence and--division method * *@authorDongbin **/ Public classMaxsublistsum {/*** Maximum sub-sequence implementation method * *@paramarr *--Arrays *@paramLeft *@paramRight *@return */ Public Static intMaxsublistsum (intArr[],intLeftintRight ) { if(left = right) {//arr.length==1 if(Arr[left] > 0) { returnArr[left]; } Else { return0; } } //dividing an array intCenter = (left + right)/2; intMaxleftsum = Maxsublistsum (arr, left, center);//left maximum value intMaxrightsum = maxsublistsum (arr, center + 1, right);//Right Maximum value//Sum left intMaxleftbordersum = 0, leftbordersum = 0; for(inti = center; I >= left; i--) {leftbordersum+=Arr[i]; if(Leftbordersum >maxleftbordersum) {Maxleftbordersum=leftbordersum; } } //Sum right intMaxrightbordersum = 0, rightbordersum = 0; for(inti = center+1;i<=right;i++) {rightbordersum+=Arr[i]; if(rightbordersum>maxrightbordersum) {Maxrightbordersum=rightbordersum; } } returnMaxlist (maxleftsum,maxrightsum,maxleftbordersum+maxrightbordersum); } /*** Get the maximum value of multiple IDs *@paramelements *@return */ Private Static intMaxlist (int... elements) { intMax = 0; for(inti = 0;i<elements.length;i++){ if(elements[i]>max) {Max=Elements[i]; } } returnMax; } Public Static voidMain (string[] args) {int[] A = {4,-3,5,-2,-1,2,6,-2}; System.out.println (Maxsublistsum (A,0, A.length-1)); }}
/*** Optimize maximum sub-sequences *@paramarr *@return */ Public Static intOptmaxsublistsum (int[] arr) { intmaxsum = 0,temp = 0; for(inti=0;i<arr.length;i++) {Temp+=Arr[i]; if(temp>maxsum) {Maxsum=temp; } if(temp<0) {Temp= 0; } } returnmaxsum; }
java--maximum sub-sequence and implementation