//简单算法importjava.util.Random;publicclasszuidaziduanhe{finalstaticintN=8;//代表列intbestSum=0;//最大子段和的值intbesti=0;//最大子段和所在段的起始坐标intbestj=0;//最大子...
//简单算法import java.util.Random;public class zuidaziduanhe {final static int N=8;// 代表列int bestSum = 0;// 最大子段和的值int besti=0;// 最大子段和所在段的起始坐标int bestj=0;// 最大子段和所在段的终止坐标// 最大子段和的简单算法int MaxSum(int n,int []a,int besti,int bestj)//正常的方法 { int sum=0; for(int i=0;isum) { sum=thissum; besti=i; bestj=j; } } } return sum; } public static void main(String[] args) {zuidaziduanhe zdzdh = new zuidaziduanhe();int[]a = new int [N+1];// 下标为0的元素没有意义Random rand = new Random();// 设置随机种子for(int i=1;i<=N;i++){int flag = rand.nextInt()%2;// flag为1代表正数,flag为0代表负数if(flag!=0)a[i]= rand.nextInt()%30;elsea[i] = -rand.nextInt()%30;System.out.print(a[i]+"\t");}//int bi=0,bj=0;int bestSum = zdzdh.MaxSum(N,a,zdzdh.besti,zdzdh.bestj);System.out.print("\n从"+zdzdh.besti+"到"+zdzdh.bestj+"的子段和最大,最大值为:"+bestSum);//System.out.print("\n最大字段和为:"+bestSum);}}代码如上,但是获取不到起始值和终止值
展开