zoukankan      html  css  js  c++  java
  • 课堂练习3

    设计思想:

    遍历一个数组,如果一个数小于0,就重新开始计算,如果大于0就进行相加。

    代码:

    package subarraymaxadd;
    import java.util.*;
    
    public class Subarraymaxadd {
    
        public static void main(String[] args) {
        
            Scanner input = new Scanner(System.in);
            System.out.println("请输入数组长度:");
            int len = input.nextInt();
            int[] arr = new int[len]; 
            System.out.println("请输入数组:");
            for(int i=0;i<len;i++)
            {
                arr[i] = input.nextInt();
            }
            input.close();
            
            if(len==0||arr==null)
            {
                System.out.println("输入无效!");
            }
            
            int cursum = arr[0];
            int maxsum = Integer.MIN_VALUE;
            for(int i=0;i<len;i++)
            {
                if(cursum<=0)
                {
                    cursum=arr[i];
                }
                else
                {
                    cursum+=arr[i];
                }
                
                if(maxsum<cursum)
                {
                    maxsum=cursum;
                }
                
            }
            
            System.out.println("子数组的最大和为:"+maxsum);
    
        }
    
    }

    结果截图:

    总结:

    本次测验一开始想的是先前两个数加,大于0就接着往下遍历,小于0就判断前两个数,但运行阶段不能得出结果;还有arr[i+1]有超过范围,还是要更加细心。

  • 相关阅读:
    新浪SAE搭建项目
    PHP ReflectionClass
    自定义时间函数
    mysql 日期函数
    jquery之商城菜单
    jquery之行自加自减
    前端之拖动面板
    商城轮播图
    js之返回网页顶部
    js之搜索框
  • 原文地址:https://www.cnblogs.com/lk0823/p/5364924.html
Copyright © 2011-2022 走看看