课后作业(求最大数组)

思路:

设定三个变量,result分别是(子数组中的和的最大值,初始值为array[0])、result(当前子数组的和,初始值为array[0]);

先让用户自己设定数组的长度,之后输入数组。从数组第一位开始遍历数组, max=max+array[i],若result<0,则令max=0;若max>result,则result=max;最后当循环运行结束后,输出最后result的值。

问题

计算结果时for循环起始值应从1开始,若从0起始的话会多算一遍数组array[0];

package shuzhi;
import java.util.Scanner;
public class shuzuzhi {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner in=new Scanner(System.in);
        System.out.println("请输入数组长度:");
        int n=in.nextInt();
     
        int array[]=new int[n];
        System.out.println("请输入相应的整数:");
        for(int i=0;i<n;i++)
        {
            array[i]=in.nextInt();
        }
        
        int max=array[0];
        int result =array[0];
        for(int i=1;i<n;i++)
        {
            max=max+array[i];
            if(max<0)
            {
               max=0;
            }
            if(max>result)
            {
                result=max;
            }
        
        } 
       
       System.out.print("子数组的最大值为:"+result);
        
        
        
        
    }

}

截图:

原文地址:https://www.cnblogs.com/chenpengmeng/p/5369852.html