软件工程个人作业05

设计思路:

一个数组首尾相接来找和最大的子数组,我认为就是寻找一个能产生和最大子数组的一种数组的最大排列,即去掉最小的负数。若数组中都是正数,所有数相加就能和最大,若数组中有负数,则去掉最小的负数,在剩下的子数组中找一个和最大的子数组。去掉最小负数的方法就是遍历数组,找到最小值,把其放在数组的首位或者是末位就可以了。

源代码:

import java.util.*;

public class ArrayMax {
    public static void main(String args[])
    {
        Scanner input = new Scanner(System.in);
        System.out.print("请输入数组的长度:");
        int n = input.nextInt();

        int data[] = new int[n];
        int array[] = new int[n];
        System.out.print("请输入数组:");
        for(int i=0;i<n;i++)
        {
            data[i] = input.nextInt();
        }

        int sum = 0;
        int min = data[0];
        int number = 0;

        for(int i=0;i<n;i++)
        {
            if(min>data[i])
            {
                min = data[i];
                number = i;
            }
        }

        for(int i=number;i<n;i++)
        {
            array[i-number] = data[i];
        }
        for(int i=0;i<number;i++)
        {
            array[i+n-number] = data[i];
        }

        int max = min;
        for(int i=0;i<n;i++)
        {
            sum = sum + array[i];

            if(sum>max)
            {
                max = sum;
            }

            if(sum<0)
            {
                sum = 0;
            }
        }
        System.out.println("所有子数组的和的最大值为:"+max);
    }
}

结果截图:

时间: 2024-11-18 21:35:35

软件工程个人作业05的相关文章

软件工程个人作业05(二维数组求最大子数组的和)

题目:返回一个二维整数数组中最大联通子数组的和. 要求:输入一个二维整形数组,数组里有正数也有负数.求所有子数组的和的最大值.要求时间复杂度为O(n). 程序要使用的数组放在一个叫 input.txt 的文件中, 文件格式是: 数组的行数, 数组的列数, 每一行的元素, (用逗号分开) 每一个数字都是有符号32位整数,当然,行数和列数都是正整数.程序设计思路:此次试验考虑到需要求最大联通子数组和.可以定义一个类(其中有value,x,y,neighbor,select),主函数里定义一个二维的对

软件工程第一次作业补充

软件工程第一次作业的补充 对于作业"在一周之内快速看完<构建之法>,列出你不懂的5-10个问题". 作业要求有: (1)在每个问题后面,请说明哪一章节的什么内容引起了你的提问,提供一些上下文 (2)列出一些事例或资料,支持你的提问 (3)说说你提问题的原因,你说因为自己的假设和书中的不同而提问,还是不懂书中的术语,还是对推理过程有疑问,还是书中的描述和你的经验(直接经验或间接经验)矛盾? 例如:我看了这一段文字 (引用文字),有这个问题 (提出问题):我查了资料,有这些说法

软件工程教学作业 汇总

本篇文章收集并整理各位教师在博客园中发表的软件工程教学作业,希望为各位老师.学生和爱好者提供便利. 如果博文作者提出异议或意见,本人虚心接受并诚恳道歉. 小林觉 http://www.cnblogs.com/juking/ 学年 学期 作业 链接 简介 2015-2016 1 1 http://www.cnblogs.com/juking/p/4787124.html http://www.cnblogs.com/juking/p/4803578.html   2015-2016 1 2 htt

软件工程第一次作业程序开发历程

收到软件工程的作业,面对题目“......”.我先拟定了一个大概的思路,以及一些关键的函数.思路利用循环产生30道算术式,并计算答案,存储答案,在利用循环显示30道题的答案. 而关键函数我认为就是随机正整数的产生.考虑到这点,我决定用javascript来编写我的程序,其一是因为最近学习js,其二是因为对c和c++有点陌生了,然后javascript有Math.random这个函数,尽管它只能产生0与1之间的随机数.决定完语言后,我又分析了下题目,考虑到涉及真分数的问题,我将程序分成整数与真分数

软件工程个人作业02-1

老师对自动出题的系统又有了新的功能: 1.是否有乘除法: 2.是否有括号:最多可支持十个数参与计算 3.数值范围: 4.加减结果有无负数: 5.除法结果有无余数: (因为和上文的思路有些交汇,不懂的可以参考上文 >>点击这里参考上文) 下面是我的思路: 1.是否有乘除法: 分条件设置a的值 如果选择无乘除:a=(int)(0+Math.random()*2);//a=0或a=1时分别对应着string数组的"+""-" 如果选择无乘除:a=(int)(0

软件工程结对作业02(借鉴版)

软件工程结对作业02(借鉴版) 在编写程序的时候因为不会将Java程序嵌入进jsp中所以借鉴了一个学姐的程序,下面是学姐的程序.但在对学姐程序就行修改时发现了一些问题: 在Newjsp中能调用html中的题目个数的参数 在Myjsp中不能调用html中的题目个数的参数 其中这个参数timugeshu,是我自己后来添加的,用来改变题目个数的,与Java程序无关,只在jsp文件中作用 源程序: NewFeil.html <!DOCTYPE html> <html> <head&g

软件工程课堂作业04

软件工程课堂作业04 源代码: 1 package jian; 2 import java.io.*; 3 import java.util.Scanner; 4 public class Point3D{ 5 public static int Lenght(int list[],int lenght) 6 { 7 int i,max; 8 max=list[0]; 9 for(i=1;i<=(lenght-1);i++) 10 { 11 if(list[i]>max) 12 { 13 ma

软件工程个人作业12

软件工程个人作业12 程序题目: •三人行设计了一个灌水论坛.信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个“水王”,他不但喜欢发帖,还会回复其他ID发的每个帖子.坊间风闻该“水王”发帖数目超过了帖子数目的一半. •如果你有一张当前论坛的帖子(包括回帖)列表,其中帖子的作者的ID也在其中,你能快速的找到这个传说中的水王吗? 一.设计思想 根据“水王”发帖数目超过了帖子数目的一半,通过寻找发帖数过半的ID找出“水王”. 二.源代码: 1 package finding; 2 3 impor

软件工程结对作业 四则运算界面设计

软件工程结对作业 四则运算界面设计 康鑫  PB16060203 娄雨禛  PB16060356 一.项目分析 二.进度规划与完成情况 三.主要函数 四.简单的数据测试 五.编程困惑与心得 原文地址:https://www.cnblogs.com/RainLou/p/8735480.html