一维数组两步式求最大子数组和
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() {
}
}
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() {
}
}
以上是关于一维数组两步式求最大子数组和的主要内容,如果未能解决你的问题,请参考以下文章