zoukankan      html  css  js  c++  java
  • 最大子数组问题

      

    编前思路:没有思路,不知如何下手

    编程代码:


    package practice1; import java.util.Random; import java.util.Scanner; public class practice { public static void main(String[] args) { // TODO 自动生成的方法存根 System.out.print("请输入数组的长度:"); Scanner sr=new Scanner(System.in); int num=sr.nextInt(); int [] sz =new int[num]; Random a=new Random (num); System.out.println("随机产生的数组为:"); for (int i=0;i<num;i++) { sz[i]=a.nextInt(200)-100; System.out.print(sz[i]+" "); } System.out.println(); long maxsum=sz[0]; long left=sz[0]; for(int j=1;j<num;j++) { if(left<0) { left=sz[j]; } else{ left+=sz[j]; } System.out.println("left maxsum "+left+" "+maxsum); maxsum=getmax(left,maxsum); } System.out.println("最大子数组的值为:"+maxsum); } private static long getmax(long a, long b) { // TODO 自动生成的方法存根 return a>b? a:b; } }

     

    结果截图:

    编后反思:

    首先介绍一下这个程序的算法

    首先把最左边第一个值设为最大子数组值,和左边最大子数组值,

    然后不断的加一个数,然后比较最大子数组值和左边最大子数组值得大小,

    如果左边最大指数组值出现负数,则让左边最大子数组值为下一个数(也就是说舍弃),

    直到加完整个数组位置,然后输出最大值。

    这个程序的思想就是把问题的规模不断的缩小,直到能处理为止。通过这个算法,收益良多,这种化繁为简的思想能快速的帮助我们解决问题。

  • 相关阅读:
    Java中sleep方法和wait的详细区别
    判断一个字符串中出现次数最多的字符,统计这个次数
    截取字符串abcdefg的efg
    关于正则
    css 的清0
    关于alert
    新感知,可以创建自定义标签
    JS的组成部分
    把字符串首字母变成大写
    排序方法两两对比
  • 原文地址:https://www.cnblogs.com/twentytwo/p/4364063.html
Copyright © 2011-2022 走看看