最大子段和分治算法

 

import java.util.Scanner;

public class _3_4最大子段和分治算法 {
	static int n;
	static int[] a=new int[100];
	
	static int MaxSubSum(int left,int right){
		int sum=0;
		if(left==right)
			sum=a[left]>0?a[left]:0;		
		else{
			int center=(left+right)>>2;
			int leftsum=MaxSubSum(left,center);
			int rightsum=MaxSubSum(center+1,right);
			int s1=0;
			int lefts=0;
			for(int i=center;i>=left;i--){
				lefts+=a[i];
				if(lefts>s1)
					s1=lefts;
			}
			int s2=0;
			int rights=0;
			for(int i=center+1;i<=right;i++){
				rights+=a[i];
				if(rights>s2)
					s2=rights;
			}
			sum=s1+s2;
			if(sum

 

你可能感兴趣的:(分治算法,算法设计)