• 课堂实践01


            这周四老师给我们讲了很多东西,告诉我们今后如何更好的工作学习。现在苦一点以后轻松一点。教学计划等也了解了大概。后两节课老师给我们布置了一道编程题如下:

          题目:返回一个整数数组中最大子数组的和。 要求: 输入一个整形数组,数组里有正数也有负数。        数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。 求所有子数组的和的最大       值。要  求时间复杂度为O(n)。

            看到题目之后就开始提炼其中的关键字:整形数组,可正可负,一个或者多个子数组求和,获取和的最大值并输出和,时间复杂度是O(n).

           思路当然就是按部就班的创建数组,然后一次次的遍历整个数组,找到最大的那个输出。但是创建数组之后如何遍历所有数组让我思索了很久。用for循环一个个算出来并赋值给max,再判断当前输出的值是不是比上次的大,取最大值。思索了一会明确了思路,却不知道怎么编下去,总感觉有很多漏洞,逻辑还是有些问题,就不断的调试不断实验,一直没解决。

           过了一会,老师让做完的同学上台分享他们的思想方法,我的思路才慢慢清晰,矛盾的地方也渐渐明了。最后,参考了一个同学的方法,修补着自己的不足,创建数组,赋值,循环取极大值输出,将极大值输出比较,如果全是负数将最大的直接输出,全是正数就相加比较。茅塞顿开,编译成功。

    源代码如下:

    package project;
    import java.util.Scanner;
    public class dfsfa {
    
        public static void main(String[] args){
            int number,sum,a;
            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();
            }
            sum=array[0];
           a=array[0];
            for(i=1;i<number;i++)
            {
                if(a<0)
                {
                    a=0;
                }
                a+=array[i];
                if(a>sum)
                    sum=a;
                
            }
            System.out.println(sum);
        }
    }
  • 相关阅读:
    Python KNN算法
    Python TF-IDF计算100份文档关键词权重
    Python 结巴分词
    Python 将pdf转换成txt(不处理图片)
    Python小爬虫-自动下载三亿文库文档
    Kubuntu麦克风音频无声音
    adb常用命令
    Ubuntu下adb的安装
    Wamp安装使用+Git for Windows
    TensorFlow使用记录 (九): 模型保存与恢复
  • 原文地址:https://www.cnblogs.com/Excusezuo/p/10500238.html
Copyright © 2020-2023  润新知