zoukankan      html  css  js  c++  java
  • 首位相连数组求最大子数组的和

    1.设计思路:首先需要定义一个数组,用来存储数值,接着定义一个是上一个数组长度2倍的数组,通过赋值保证原数组能够首尾相连,接着套用求子数组的最大和的方法,不过在求子数组最大和时,必须保证子数组的长度不超过原数组的长度。

    2源程序:

    package shuzu;
    
    import java.util.Scanner;//循环数组首位相连
    
    public class MAX {
        
        public static void main(String[] args) {
            int number;
            System.out.println("请输入数组的长度");
            Scanner sc=new Scanner(System.in);
            number=sc.nextInt();
            int array[]=new int[number];
            int array1[]=new int[2*number];
            System.out.println("请输入数组的值");
            for(int i=0;i<number;i++) {
                array[i]=sc.nextInt();
            }//输入数组的值
            int maxsum,maxstart;    
            System.out.println("请输入数组");
            for(int i=0;i<2*number;i++) {
                if(i<number) {
                    array1[i]=array[i];
                }else if(i>=number) {
                    array1[i]=array[i%number];
                } //保证数组首位相连
                System.out.println("array1[i]"+i+"="+array1[i]);
            }
            maxsum=array1[0];
            maxstart=array1[0];
    //        int y=0;
            int start=0;
            for(int i=1;i<2*number-1;i++) {
                if(maxstart<0) {
                    maxstart=0;
                    start=i;
                }
                maxstart+=array1[i];
                if(maxstart>maxsum) {
                    maxsum=maxstart;
                }
                if((i-start+2)>number) {
                    break;
                }//判断子数组长度是否大于原数组长度
            }
            System.out.println("最大子数组的和为"+maxsum);
        }
    }

    3.测试结果:

    4自我感想:这道题目是在求子数组的和最大值的改编,其内容基本一致,只是添加了如何让数组首尾相连,一道题目在不同的条件下就可能出现不同的问题,这也需要我们 不断地去思考,去学习。

  • 相关阅读:
    判断当前时间
    判断页面有没有点击
    js前台与后台数据交互-后台调前台(后台调用、注册客户端脚本)
    js前台与后台数据交互-前台调后台
    关于Cookie
    关于Session
    asp.net中的<%%>的几种形式的用法
    解析客户端脚本、服务器端脚本
    Asp.net--Ajax前后台数据交互
    Asp.Net 前后台交互小结
  • 原文地址:https://www.cnblogs.com/1502762920-com/p/10588201.html
Copyright © 2011-2022 走看看