• 循环数组求最大子数组的和


    一.设计思想

    1.在原先的基础上考虑连接处的问题,我考虑的是可以把之前循环次数加上数组长度成为新的循环上限。例如之前循环从下标1开始,n(数组长度)结束,循环体执行n-1次,改为循环从下标1开始,2n-1处结束,循环体执行2n-2次。

    2.数组长度不变,增加一个控制变量j(数组下标),初值为1,开始位置值maxstart每往前加上一个元素,j都自加一,当j加到n(数组长度)时,j重新赋值为0。

    3.循环体执行2n-2次后,即可得出最大子数组的和。

    二.源代码

    import java.util.Scanner;
    public class ArrayMax {
    
        public static void main(String[] args){
            int number,maxsum,maxstart;
            int i,j=1;
            Scanner in = new Scanner(System.in);
            System.out.println("请输入数组的大小:");
            number=in.nextInt();
            int array[]=new int[number];
            System.out.println("请输入数组的值:");
            for(i=0;i<number;i++)
            {
                array[i]=in.nextInt();
            }
            maxsum=array[0];
            maxstart=array[0];
            for(i=1;i<2*number-1;i++)
            {
                if(maxstart<0)
                {
                    maxstart=0;
                }
                maxstart+=array[j];
                j++;
                if(maxstart>maxsum)
                    maxsum=maxstart;
                if(j==number)
                    j=0;
            }
            System.out.println("最大子数组和:"+maxsum);
            in.close();
        }
    }

    三.结果截图

    四.总结

      循环数组求最大子数组和只需要在之前的基础上考虑数组最后一个元素和第一个元素的过渡问题,循环控制总的次数,不能再用循环来控制数组的下标,需要再另设一个控制变量来控制数组下标,在下标加到成数组最后一个时,控制变量变为数组第一个元素的下标。

    五.合作过程

    1.我们先交流了一下对方的想法,讨论一下彼此的优缺点,然后我们开始自己先实现自己的程序,彼此复查对方的程序功能,找出对方存在的bug。

    2.工作照:

  • 相关阅读:
    Visual Studio自带的的Developer Command Prompt对话框
    利用VS(Visual Studio)自带的工具查看DLL文件的信息
    谷歌面试官反馈级别
    Inno Setup中多语言时,使用占位符填充
    SQL*Plus命令
    Oracle 所有字典
    彻底完全卸载 SQL Server 2005 的图文教程
    win7(windows 7)系统下安装SQL2005(SQL Server 2005)图文教程
    创建表空间、新增用户、给用户赋予DBA权限 、删除用户下的上有数据表
    ORA-01012: not logged on
  • 原文地址:https://www.cnblogs.com/java-meng/p/5379993.html
Copyright © 2020-2023  润新知