zoukankan      html  css  js  c++  java
  • 个人作业1-数组

    设计思想:

           首先定义int型number,maxsum,maxstart;number为输入的数组长度,maxsum为最大子数组,maxstart为开始位置值,刚开始时最大子数组maxsum和开始位置值maxstart都是数组第一个元素,然后判断开始位置的值,如果maxstart小于0,则另maxstart等于0,然后maxstart在自身基础上加上下一个数组元素,再判断maxstart与maxsum的大小,若maxstart大于maxsum,则maxsum的值为maxstart,maxstart的值不变;以此递归,直至数组最后一个元素,最后maxsum的值就是这个数组中最大子数组的和。

    出现的问题:

            1.换用了判断开始位置的值,正的则子数组和最大值再加上下一个数组元素,负的则子数组和最大值变成下一个数组元素的值。

            2.刚开始将两个for循环嵌套来得到的值不正确。

    可能的解决方案:

            上网查阅资料

    源代码:

    import java.util.Scanner;
    public class Shuzu {
    public static void main(String[] args){
            int number,maxsum,maxstart;
            int i;
            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<number;i++)
            {
                if(maxstart<0)
                {
                    maxstart=0;
                }
                maxstart+=array[i];
                if(maxstart>maxsum)
                    maxsum=maxstart;
                
            }
            System.out.println(maxsum);
            in.close();
        }
    }

    结果截图:

    总结:

          在考虑这个问题时,需要从一开始的元素考虑,然后逐步扩展,此题运用循环递归就可以解决。当自己不懂的知识要上网查阅,网上有很多解答。  

  • 相关阅读:
    10分钟学会Python
    Python接口自动化(二)接口开发
    Python接口自动化(一)接口基础
    去掉webstorm内容区域右侧的一条竖线
    webstorm识别element-ui的标签
    vue中点击复制粘贴功能 clipboard 移动端
    vue pc element-ui class
    禁止浏览器记住密码
    js 将网络图片格式转为base64 canvas 跨域
    移动端网页在本地服务器调试
  • 原文地址:https://www.cnblogs.com/lover995/p/10507045.html
Copyright © 2011-2022 走看看