数组(二)

package sss;
import java.io.*;
public class s1
{
 public static void main(String[] args) throws FileNotFoundException
 {
  // TODO 自动生成的方法存根
  BufferedReader readTxt=new BufferedReader(new FileReader(new File("D:\0.txt")));
      String textLine="";
      String str="";
      try
  {
   while(( textLine=readTxt.readLine())!=null)
   {
              str+=" "+ textLine;
     }
  } catch (IOException e)
  {
   // TODO 自动生成的 catch 块
   e.printStackTrace();
  }
      String[] numbersArray=str.split(" ");
      int length=numbersArray.length;
      int []cs=new int[length-1];
      int i=0;
      for(i=0;i<length-1;i++)
      {
       cs[i]=Integer.parseInt( numbersArray[i+1]);
      }
      System.out.print("采集数组F[]: ");
      for(i=0;i<length;i++)
   {
   System.out.print(numbersArray[i]+" ");
   }
      System.out.print(numbersArray.length-1);
      System.out.println();
     
   int []a=new int[cs.length];
   int []b=new int[cs.length];
   int []c=new int[cs.length];
      int t=0,j=0,k=0;
   length=cs.length;
   for(i=0;i<length;i++)
   {
    if(cs[i]<0)continue;
    else {t=cs[i];break;}
   }
   for(;i<length-1;i++)
   {
    if(cs[i]*cs[i+1]>0)
     {
        t=t+cs[i+1];
        if(cs[i]>0) {a[j]=t;}
        if(cs[i]<0) {b[k]=t;}
     }
    else
    {
     if(i==length-2)
     {
      if(cs[i]>0) {a[j]=t;b[k]=cs[i+1];}
      if(cs[i]<0) {b[k]=t;a[j]=cs[i+1];}
     }
     if(cs[i]>0) {a[j]=t;j+=1;t=cs[i+1];}
     else{b[k]=t;k+=1;t=cs[i+1];}
     
    }
   }
   
   //剪开数组始
   int m = 0,n=0,p=0;
   for(i=0;i<a.length;i++)
   {
    if(a[i]==0) {m=i;break;}
    else continue;
   }
   for(i=m;i<a.length;i++)
   {
    a[i]=a[p];
    p++;
    if(p==m-1)break;
   }
   p=0;
   for(i=0;i<a.length;i++)
   {
    if(b[i]==0) {n=i;break;}
    else continue;
   }
   for(i=n;i<b.length;i++)
   {
    b[i]=b[p];
    p++;
    if(p==n-1)break;
   }
   //正数数组:
   System.out.print("正数数组a[]: ");
   for(i=0;i<length;i++)
   {
   System.out.print(a[i]+" ");
   if(i==length-1)System.out.println(a.length);
   }
   //负数数组:
   System.out.print("负数数组b[]: ");
   for(i=0;i<length;i++)
   {
   System.out.print(b[i]+" ");
   if(i==length-1)System.out.println(b.length);
   }
   //整合数组:
   System.out.print("整合数组D[]: ");
   for(i=0;i<length;i++)
   {
   System.out.print(a[i]+" ");
   System.out.print(b[i]+" ");
   if(i==length-1)System.out.println(a.length+b.length);
   }
   
   //剪开数组末
   
   j=0;
   int sum;
   for(i=0;i<a.length;i++)
   {
    c[i]=a[i];
   }
   for(i=0;i<a.length;i++)
   {
    sum=a[i];
    for(j=i;j<a.length-1;j++)
    {
     sum=a[j+1]+b[j]+sum;
     if(sum>c[i])c[i]=sum;
     else continue;
    }    
   }
   int max=c[0];
   for(i=1;i<a.length;i++)
   {
    if(c[i]>max)max=c[i];
    else continue;
   }
   System.out.println("最大值为:"+max);
   
 }
}
算法是比较难得,其他的还好。
原文地址:https://www.cnblogs.com/mitang0-0/p/10572533.html