首页 > 其他 > 详细

1003.Max Sum

时间:2019-07-08 14:15:41      阅读:85      评论:0      收藏:0      [点我收藏+]

技术分享图片
一开始是开了一个二维数组 保存每一个位置所对应的值 结果发现过于啰嗦 而且过于臃肿 导致我出错后一直找不到那里错 所以参考了其他解法 改写原来的方法

import java.util.*;
public class Main {
    public static void main(String[] args) {
        int w = 1;
        int[] arr = new int[100002];//会被覆盖
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        while (n > 0) {
            int num = sc.nextInt();
            // 将数据放进数组中 maxsum 统计最大值 flag 临时最大值
            int maxSum = -9999;
            int flag = 0;//一段数据的极大值 不一定为最大值
            int star = 0;//开始位置 从0 开始
            int end = 0;//结束位置 从0 开始
            int z = 0;//记录正确的位置
            for (int i = 0; i < num; i++) {
                arr[i] = sc.nextInt();// 读取数据 然后进行处理
                flag += arr[i];
                if (flag > maxSum) {
                    maxSum = flag;
                    end = i;
                    star = z;
                }
                if (flag < 0) {// 归零处理 根据判断 此处arr[i]为负数
                    flag = 0;
                    z = i + 1;//z仅在这里修改
                }
            }
            System.out.println("Case "+(w++)+":");
            System.out.println(maxSum+" "+(star+1)+" "+(1+end));
            if (n != 1) 
                System.out.println();
            n--;
        }
    }
}

1003.Max Sum

原文:https://www.cnblogs.com/cznczai/p/11150156.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!