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

    结果截图:

     

  • 相关阅读:
    ubuntu16.04安装ibus中文输入法
    apt --fix-broken install
    fuelgauge
    make flash FLASH_CONFIG=jtag_full
    使用android ndk编译boost动态库
    RK3288的gpio设置
    RK3288 GPIO 输出问题
    HDU-2586-裸LCA入门-tarjan离线
    uva-11324-SCC+dp
    HDU-2767-tarjan/Kosaraju求scc
  • 原文地址:https://www.cnblogs.com/xiaosongbiog/p/5397290.html
Copyright © 2011-2022 走看看