zoukankan      html  css  js  c++  java
  • 课堂练习&课下作业

    设计思路:

    一个数组首尾相接来找和最大的子数组,我认为就是寻找一个能产生和最大子数组的一种数组的最大排列,即去掉最小的负数。若数组中都是正数,所有数相加就能和最大,若数组中有负数,则去掉最小的负数,在剩下的子数组中找一个和最大的子数组。去掉最小负数的方法就是遍历数组,找到最小值,把其放在数组的首位或者是末位就可以了。

    源代码:

    import java.util.*;
    
    public class ArrayMax {
        public static void main(String args[])
        {
            Scanner input = new Scanner(System.in);
            System.out.print("请输入数组的长度:");
            int n = input.nextInt();
            
            int data[] = new int[n];
            int array[] = new int[n];
            System.out.print("请输入数组:");
            for(int i=0;i<n;i++)
            {
                data[i] = input.nextInt();
            }
            
            int sum = 0;
            int min = data[0];
            int number = 0;
            
            for(int i=0;i<n;i++)
            {
                if(min>data[i])
                {
                    min = data[i];
                    number = i;
                }
            }
    
            for(int i=number;i<n;i++)
            {
                array[i-number] = data[i];
            }
            for(int i=0;i<number;i++)
            {
                array[i+n-number] = data[i];
            }
            
            int max = min;
            for(int i=0;i<n;i++)
            {
                sum = sum + array[i];
                
                if(sum>max)
                {
                    max = sum;
                }
                
                if(sum<0)
                {
                    sum = 0;
                }
            }
            System.out.println("所有子数组的和的最大值为:"+max);
        }
    }

    结果截图:

    体会:

    这次还发现了一个问题,就是上次的代码中我没有考虑数组所有数都是负数的情况,对代码计算的部分进行了修改解决了问题。

  • 相关阅读:
    SVN补充
    java面试资料总结
    JAVABEAN EJB POJO区别
    Hibernate使用原生sql语句
    Discrete Logging(poj 2417)
    卡牌游戏(bzoj 3191)
    Activation(hdu 4089)
    Aeroplane chess(hdu 4405)
    LOOPS(hdu 3853)
    巧克力(zoj 1363)
  • 原文地址:https://www.cnblogs.com/wxyxxx/p/5395029.html
Copyright © 2011-2022 走看看