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]有超过范围,还是要更加细心。

  • 相关阅读:
    输入一批整数,输出最大最小值,输入0结束
    获取最低价手机价格
    插入数值
    猜数游戏
    数字金字塔
    输出星期数
    9*9乘法表
    linux 出core设置问题
    linux socket连接中 ERRNO错误
    linux c 获取头文件函数getenv
  • 原文地址:https://www.cnblogs.com/lk0823/p/5364924.html
Copyright © 2011-2022 走看看