zoukankan      html  css  js  c++  java
  • 软件工程个人作业05

    设计思路:

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

    源代码:

    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);
        }
    }
    View Code

    结果截图:

     

  • 相关阅读:
    go语言基本语法
    go语言学习
    Dockerfile简单实战
    Dockerfile构建命令
    docker安装prometheus grafana监控
    docker kali安装及复现永恒之蓝漏洞
    Windows系统实用快捷键
    python pip修改国内源
    网络基础——子网掩码及网络划分
    OSI七层模型简单概念及相关面试题
  • 原文地址:https://www.cnblogs.com/xiaosongbiog/p/5397290.html
Copyright © 2011-2022 走看看