子数组最大和

我用的是最直接的方法,现将所有的子数组的和求出来。将其存储到新的数组里,然后对其进行比较。但这样的时间复杂度不为O(n)。

 

 

package shuzuhe;
import java.util.Scanner;
public class he2 {
        public static void main(String args[])
        {
            Scanner s=new Scanner(System.in);
            System.out.println("请输入数组数目:");
            int sum=s.nextInt();
            int []a=new int[sum];
            System.out.println("请输入"+sum+"个数:");
            for(int i=0;i<sum;i++)
            {
                a[i]=s.nextInt();
            }
            s.close();
            int sum1=0;
            for(int i=1;i<=sum;i++)
            {
                sum1=sum1+i;
            }
            int [] b=new int[sum1];
            int temp1=0;
            for(int i=0;i<sum;i++)
            {
                int temp=0;
                for(int k=0;k<sum-i;k++)
                {   
                    temp=temp+a[i+k];
                    b[temp1]=temp;
                    temp1++;
                }
            }
            for(int i=0;i<sum1-1;i++)
                for(int k=0;k<sum1-1-i;k++)
                {
                    if(b[k]<b[k+1])
                    {
                        int temp2=b[k];
                        b[k]=b[k+1];
                        b[k+1]=temp2;
                    }
                }
            System.out.println("最大的子数组和为"+b[0]);
        }
    }




 

posted @ 2019-03-10 20:56  呵呵刀呵呵  阅读(83)  评论(0编辑  收藏  举报