• 课堂作业:首尾相连求最大子数组


    1.设计思想

        先将数组环拆解补在原来数组后面,再依次找子数组并相加,更新最大值,并需要将开始的负数舍去从正数开始算起,单独讨论全负情况。

    2.源程序

    package zishuzu;
    
    import java.util.Scanner;
    
    public class zsz {
        public static void main(String[] args) {
            System.out.println("请输入数字个数:");
            Scanner in=new Scanner(System.in);
            int n=in.nextInt();
            System.out.println("请输入每个数字:");
            int [] a=new int[100];
            for(int i=0;i<n;i++)
            {
                a[i]=in.nextInt();
                if(i<n-1)
                    a[i+n]=a[i];
            }
            int max=a[0];
            int b=0,c=0,sum=0;
            //求最大子数组
            for(int i=0;i<n;i++)
            {
                if(a[i]>0)
                {
                    int m=0;
                    for(int j=0;j<n;j++)
                    {
                        m=m+a[j+i];
                        if(m>max)
                        {
                            b=i;
                            c=j;
                            max=m;
                        }
                    }
                }
                else if(a[i]>max)
                {
                    b=i;
                    c=0;
                    max=a[i];
                }
            }    
            System.out.println("数组最大子数组:");
            for(int i=b;i<=b+c;i++)
            {
                sum=sum+a[i];
                System.out.print(a[i]+" ");
            }
            System.out.println();
            System.out.println("数组最大子数组的和:"+sum);
            in.close();
        }
    }

    3.实验结果截图

  • 相关阅读:
    find命令详解
    wget命令
    国内镜像源
    向linux服务器上传下载文件方式收集
    一些初学shell自己写的一些练习题脚本
    在Linux系统下mail命令的用法
    MAC 下安装 SVN
    天气预报api整理
    pdi vcard-2.1
    Android Studio 问题锦集【持续更新】
  • 原文地址:https://www.cnblogs.com/sunqw/p/6666006.html
Copyright © 2020-2023  润新知