一维数组两步式求最大子数组和

Posted kt-xb

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一维数组两步式求最大子数组和相关的知识,希望对你有一定的参考价值。

asd

 

 

import java.util.Scanner;
public class SeeAll {
 public static void  main(String arg[]) {
  System.out.println("你有俩选择,要么自己一下下点,要么它自己动,选前边呢你就扣个1,要不你就扣个2");
  Scanner scan = new Scanner(System.in);
  int i = scan.nextInt();
  
  if(i==1) { System.out.println("你想整几个数馁");int n= scan.nextInt();fenbu(n); }
  else if(i==2){ System.out.println("行了,你别动了"); }
  scan.close();
 }
 
 public static void fenbu(int i) {
  Scanner scann = new Scanner(System.in);
  int array[] = new int[i];
  
   if (array.length == 0) {
             System.out.println("过来哥跟你唠唠");
         }
   else {
    System.out.println("一个一个把数写上,你得写整数啊");
    for(int j=0;j<array.length;j++) {
     array[j]=scann.nextInt();
    }
    scann.close();
    System.out.print("你整的数呢是:");
    for(int j=0;j<array.length;j++) {
     System.out.print(array[j]+" "); 
    }
    System.out.print("你看对不对嘞"+"\\n");
   }
         int max = array[0];
         int sum = 0;
         for(int n=0; n<array.length;n++){ 
             //如果加上某个元素sum>=0的话,就加;
             //当数组全为负数的时候只要有加法就一定比原来的数小,此时就相当于找出数组内最大的数
             if(sum >= 0) {
                 sum += array[n]; 
             }
             else{ 
                 sum = array[n]; //否则从当前位置重新计算 
             }
             if(sum > max){ 
              System.out.print("第"+n+"遍累加结果:"+sum);
                 max = sum; 
                 System.out.print("最大子数组和:"+max+"\\n");
             }
         } 
         System.out.println("整完了,你想要的就是"+max);
     }
 public static void zidong() {
  
 }
}

技术图片

 

以上是关于一维数组两步式求最大子数组和的主要内容,如果未能解决你的问题,请参考以下文章

首尾相连一维数组的最大子数组和

求一维数组最大最大子数组和

求一维数组的最大子数组1(结对开发)

二维数组最大联通子数组和

一维数组连续子数组最大和

二维数组最大子数组(结对开发)