求数组中子数组和的最大值

1.正常的。

使用前缀和进行求解:

需要注意的是数组下标从1开始,0号空着。

还有就是求i到j之间的前缀和公式为sum[j]-sum[i-1];

import java.util.Scanner;

public class class_test {
    public static void main(String[] args) {
        int Max=100;
        int n;
        Scanner in = new Scanner(System.in);
        int[] num=new int[Max];//存原本数组
        int[] sum=new int[Max];//存前n项和
        num[0]=0;
        sum[0]=0;
        int rs;//结果
        System.out.println("输入个数:");
        n = in.nextInt();
        for(int i=1;i<=n;i++) {
            num[i] = in.nextInt();
            sum[i] = sum[i - 1] + num[i];
        }
        rs=sum[1];
        for(int i=1;i<=n;i++)
            for(int j=i+1;j<=n;j++)
                rs=Math.max(rs,sum[j]-sum[i-1]);
        System.out.println(rs);
    }

}

2.首位相连的。

posted on 2023-03-06 20:31  201812  阅读(16)  评论(0编辑  收藏  举报