课堂练习三

返回一个整数数组中最大子数组的和

设计思路:只能遍历一周,设置一个当前最大值curMax和一个最大和Max,设置for循环进行遍历,当当前最大值大于等于0则继续累加,如果小于等于0则重置,到最后比较当前最大值和最大和,最后输出最大和。

出现的问题:最大值初始不能设置为0。

可能的解决方案:初始设置为最小整数min_value.

源代码:

package test1;

import java.util.Scanner;

public class Test {

    public static void main(String[] args) {
        int[]  list =new int[100];
        int length;
        Scanner input =new Scanner(System.in);
        System.out.println("请输入数组的长度:");
        length = input.nextInt();
        if(length<=0)
        {
            System.out.println("未输入数!");
        }
        else
        {
            System.out.println("请输入数!");
            for(int i=0;i<length;i++)
            {
                list[i]=input.nextInt();
            }
        }
        input.close();
         // 记录最大的子数组和,开始时是最小的整数
        int max = Integer.MIN_VALUE;
        // 当前的和
        int curMax = list[0];
        // 数组遍历
        for (int i=0;i<length;i++) {
            // 如果当前和小于等于0,就重新设置当前和
            if (curMax <= 0) {
                curMax = list[i];
            }
            // 如果当前和大于0,累加当前和
            else {
                curMax += list[i];
            }

            // 更新记录到的最在的子数组和
            if (max < curMax) {
                max = curMax;
            }
        }
        System.out.println("最大的子数组和:"+max);

    }

}

结果截图:

总结:这个题目一开始听到确实一点头绪没有,或许是根本就没理解题目,不过在看了那么生动的演示后,大致懂了,回来试了一下,还是挺简单的,很好实现啊。

时间: 2024-10-18 15:45:36

课堂练习三的相关文章

C++课堂练习三

[本节内容]if...else...的使用 [练习题]解一元二次方程 [代码] #include<iostream> #include<cmath> using namespace std; int main() { double a, b, c; double delta; double x1, x2, x; cin >> a >> b >> c; if (a == 0) { if (b == 0) { cout <<"不

微课设计与翻转课堂

我分为以下几部分进行总结:      1.互联网教学思维的创新 柯清超博士提到目前中国的教育信息化现状,让我颇有同感,大家可以看下面的两幅图: 第一幅图:目前国内的很多企业,不单是教育方面都是对国外的一些理念进行生硬的照单全收,造成只有形式,但实际上并不适用,我个人比较崇尚"借鉴"不管是形式也好.创意灵感也好,但是借鉴以后一定要有效转化为适合自己的东西,所以我们应该多分析当前中国教育的现状.我们终端用户的现状,一步一步的改变适应教育信息化,形成有中国特色的互联网教学思维. 第二幅图:讽

果果语音直播,微信课堂-网络培训直播软件开发源码系统

果果语音直播系统(微信课堂)是旨在知识分享,思想交流的微课直播平台,聚集行业的明星讲师座谈分享,同时承载可十万余人在线直播.支持文字,语音,图片,PPT等富媒体形式,营造生动,互动的学习交流氛围.果果语音直播系统(微课)是深圳专业网络公司开发,是一款针对知识分享和传递的直播系统.与娱乐性直播相比,果果直播系统更加侧重于知识培训交流,因为在大多数知识传递的过程中,虽然视频在知识的传递中扮演着非重要角色(不排除舞蹈,表演等知识传递中,视频的重要角色),但是对平台运营者流量成本加大,同时对受众用户的手

微信课堂,果果语音直播-网络培训直播软件开发源码系统

果果语音直播系统(微信课堂)是旨在知识分享,思想交流的微课直播平台,聚集行业的明星讲师座谈分享,同时承载可十万余人在线直播.支持文字,语音,图片,PPT等富媒体形式,营造生动,互动的学习交流氛围.果果语音直播系统(微课)是深圳专业网络公司开发,是一款针对知识分享和传递的直播系统.与娱乐性直播相比,果果直播系统更加侧重于知识培训交流,因为在大多数知识传递的过程中,虽然视频在知识的传递中扮演着非重要角色(不排除舞蹈,表演等知识传递中,视频的重要角色),但是对平台运营者流量成本加大,同时对受众用户的手

腾讯课堂——基础数据类型(set集合)

认识集合 由一个或多个确定的元素所构成的整体叫做集合. 集合中的元素有三个特征: 1.确定性(集合中的元素必须是确定的) 2.互异性(集合中的元素互不相同.例如:集合A={1,a},则a不能等于1) 3.无序性(集合中的元素没有先后之分),如集合{3,4,5}和{3,5,4}算作同一个集合. *集合概念存在的目的是将不同的值存放到一起,不同的集合间用来做关系运算,无需纠结于集合中某个值 集合的定义 s = {1,2,3,1} #定义可变集合 >>> set_test=set('hello

Java课堂测试——输出单个文件中的前N个最常出现的英语单词

课堂测试一:输出某个英文文本文件中26字母出现的频率,由高到低排列,并显示字母出现的百分比,精确到小数点后面两位. HarryFre.java 1 package demo05; 2 3 import java.io.FileInputStream; 4 import java.io.IOException; 5 import java.io.InputStreamReader; 6 import java.text.DecimalFormat; 7 import java.util.Array

软件工程_东师站_第八周作业

一.PSP Date Type Job Start Interrupt(min) End Total(min) 20160417 助教 黄金点 20:00 5 21:00 55 20160418 助教 黄金点 19:00 12 21:00 108 20160419 助教 黄金点 18:45 100 23:00 155 20160420 助教 团队作业 10:00 35 11:20 45 20160425 结对编程 四则运算 19:00 5 19:30 25 ? 二.进度条 ? 代码行数 博客字数

引入微课优化高职高专英语阅读教学

微课的雏形初见于 20 世纪 60 年代的美国,21 世纪在国内得到关注.2013 年第一届全国高校微课教学大赛首次掀起了普遍推广微课教学的高潮,随着 2014 年第二届全国高校微课教学大赛的顺利举办,微课教学在第一线教师中得以快速发展,优秀作品层出不穷. 一.微课与传统课堂的差异 首先,微课以时间短著称,以全国高校微课教学大赛比赛方案为例,第一届要求微课时长不超过二十分钟,第二届缩短至十五分钟之内,还有一些专家建议应缩短到五至十分钟,这迥异于传统意义上的四十五分钟课堂教学;其次,微课虽短小但完

【分享】近4000份数学学习资源免费分享给大家

一直以来喜欢收集数学类的教程资源,于是费了好大劲从万千合集站上扒拉了下来,总结归类了一下,一共有将近4000本电子书.经测试,均可免费下载,可能会弹出小广告,可不必理会之.[仅供学术学习和交流,请无用于商业用途.]另外,如有可能,还请尽量支持正版纸质书.   数学史(54)     数学史.rar 55.6 MB   数学的起源与发展.rar 4.3 MB   费马大定理—一个困惑了世间智者358年的谜.pdf 9.5 MB   通俗数学名著译丛14-无穷之旅:关于无穷大的文化史.pdf 14.