码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2019-04-25 22:47:19      阅读:145      评论:0      收藏:0      [点我收藏+]

标签:最大子数组   维数   div   scan   com   zid   png   new   sum   

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() {
  
 }
}

技术图片

 

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

标签:最大子数组   维数   div   scan   com   zid   png   new   sum   

原文地址:https://www.cnblogs.com/kt-xb/p/10771559.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!