要求:
输入整数数组,子数组求和,求子数组的最大值,时间复杂度为0,
设计思想:
随机生成N个整数,规定子数组的个数最大值为3的随机值,先生成一个数n1,在用for循环将前n个数向加赋值给sun[i],再生成一个随机数n2,,将n1到n2 之间的数相加赋值给sun[j++],依次循环,如果n1+n2+······大于N那将最后的和在赋值给sun[j],然后判断sun[]中的最大值,最后输出
public class Test { /** * @param args */ final static int N=10; public static void main(String[] args) { // TODO 自动生成的方法存根 int[] a=new int[N]; int j=0; int k; int l=0; int[] sum ={0,0,0,0,0,0,0,0,0}; System.out.print("数组:"); for(int i=0;i<N;i++) { a[i]=(int) (Math.random()*40-20); System.out.print(a[i]+" "); } System.out.println(); k=(int) (Math.random()*3+1); j=k; for(int i=0;i<N;) { sum[l]=sum[l]+a[i]; if(i<j) { i++; } if(i==j) { j=j+k; k=(int) (Math.random()*3+1); l++; } if(j>N) { j=N; } } System.out.print("子数组:"); for(int i=0;i<l;i++) { System.out.print(sum[i]+" "); } System.out.println(); int max=sum[0]; for(int i=0;i<l;i++) { if(sum[i]>max) max=sum[i]; } System.out.print("最大子数组:"+max); } }
结果:
时间: 2024-10-13 00:57:39