• 带环的数组最大子数组和


    1.题目

    输入一个一维整形数组,数组里有正数也有负数。

    一维数组首尾相接,像个一条首尾相接带子一样。

    数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。

    发表一篇博客文章讲述设计思想,出现的问题,可能的解决方案(多选)、源代码、结果截图、总结。

    2.设计思想

    .首先定义循环,输入要处理的数组;.定义一个整型数b,初始化为0,和求最大子数组的sum,初始化为0,然后设置循环,每进行一次循环,b等于b加上a[i],如果sum小于b,sum

    等于b ,如果b小于0,b就等于下一个数。把这个环所有的数组情况都复制另一个数组,每次将数组的数向后移一位,最后一位移到第一位,每次数组都求出一个最大值,然后比较最大值中的最大数,他就是环的最大值。

     
    3.源程序代码
    //1505-2班,康杨
    package demo;
    import java.util.*;
    public class Shuzuhe {
        public static void main(String[] args){
            Scanner sc=new Scanner(System.in); 
            int L;
            System.out.println("请输入数组长度");
            L=sc.nextInt();
            int a[]=new int[L];
            int c[]=new int[L];//定义一个长为L 的数组,作为输入数组
            int sum1[]=new int[L];
            int d=sum1[0];
            System.out.println("请输入要进行处理的数(L个):");
            for(int i=0;i<L;i++)//输入L个数
            {
                c[i]=sc.nextInt();
            }
            for(int j=0;j<L;j++)
            {
                for(int k=0;k<L;k++)
                {
                    a[k]=c[(j+k)%L];//用于记录计算了的数组长度
                }
                int sum=a[0];//用于记录和
                int b=0;//用于每次运算,找最大子数组
            
                for(int i=0;i<L;i++)
                {
                    if(b<0)
                    {
                        b=a[i]; //如果b<0,将b移到加为负数那位的后一位
                    }
                    else
                    {
                        b+=a[i];
                    }
                    if(sum<b)
                    {
                        sum=b; //sum为当前最大子数组的和
                    }
                    sum1[j]=sum;
                }
                if(d<sum1[j])
                {
                    d=sum1[j];
                }
            }
            System.out.print("最大子数组和为:");
            System.out.print(d);
        }
    }

    4.程序运行截图

    5.结论

    写的时候思路混乱的时候容易出现逻辑错误,思路想好了程序就容易些了,

  • 相关阅读:
    vue分页组件(二)
    ES6里let、const、var区别总结
    electron-vue项目打包踩坑记录
    node环境变量配置
    第一次把本地项目与git相连
    java项目环境搭建
    npm上发布vue插件
    HTML5日期时间输入类型注意事项(time,date)
    vue 分页组件
    vue里ref ($refs)用法
  • 原文地址:https://www.cnblogs.com/kangy123/p/6647327.html
Copyright © 2020-2023  润新知