• 求最大子数组


    要求:

    输入一个整形数组,数组里有正数也有负数。

    数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。

    求所有子数组的和的最大值。要求时间复杂度为O(n)

    设计思想:

    数组中有正有负,子数组的和最大值就不一定是元素个数最多的那个子数组。所以开始从0遍历,先求两个元素的子数组的最大值,然后以此类推,通过比较,if判断,把最大值赋给max。

    代码:

    import java.util.Scanner;

    public class shuzu {

        public static void main(String[] args) {     

            Scanner scanner=new Scanner(System.in);

            System.out.println("请输入数字的数量:");

            int n=scanner.nextInt();

            int[] a=new int[n];

            System.out.println("请输入数组的数值:");

            for(int i=0;i<n;i++){

                a[i]=scanner.nextInt();

            }

            for(int i=1;i<n;i++){

                if(a[i]+a[i-1]>a[i])

                    a[i]=a[i]+a[i-1];

            }

            int ans=-1000;

            for(int i=0;i<n;i++)

            {

                if(a[i]>ans)

                    ans=a[i];//找取最大值

            }

            System.out.println(ans);

        }

    }

    截图:

     

     

     

     总结:

    求一个最大子数组和,看似简单,其实不然。通过这个实验,练习了算法。我觉得算法难的地方是思路,思路清晰了写起来会好很多。

  • 相关阅读:
    冒泡排序
    python isinstance 函数
    2.x与3.x差异、条件语句、数据类型、其他
    区间结构
    配置文件监听器
    Enumerable扩展方法
    EsayUI + MVC + ADO.NET(项目架构)
    vue.js 官网及组件网站记录
    vue.js 二维码生成组件
    分享一些学习资料-大量PDF电子书
  • 原文地址:https://www.cnblogs.com/shumouren/p/13090293.html
Copyright © 2020-2023  润新知