软件工程概论-课后作业3(子数组求最大值)

【设计思路】

1.用户初始化一个数组

2.定义tempmax作为临时最大值,定义最大值max,初始均为array[0]

3.使用循环从array[1]开始,判断tempmax值为正或负,若为正tempmax为正,tempmax值变为tempmax加上遍历的数,若tempmax值为负,tempmax值变为遍历的那个数。

4.比较max和tempmax值大小,若max小将tempmax值赋给max

【程序源代码】

import java.util.*;

public class MaxsArray
{
    public static void main(String args[])
    {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入你要求子数组最大值的数组长度:");
        int length = sc.nextInt();
        int array[] = new int[length];

        System.out.println("请输入你要求子数组最大值的数组的数:");
        for(int i=0;i<length;i++)
        {
            array[i] = sc.nextInt();
        }

        int max = array[0];
        int tempmax = array[0];

        for(int i=1;i<length;i++)
        {
            if(tempmax<0)
            {
                tempmax = array[i];
            }
            else
            {
                tempmax+=array[i];
            }
            if(tempmax>max)
            {
                max = tempmax;
            }
        }
        System.out.println("子数组的最大值为:"+max);
    }
}

【结果截图】

【出现错误】

之前没有设定tempmax,若max值为正,当遍历数为负时,输出结果有误

【解决方案】

加入tempmax和max值进行比较

【总结】

遍历求和使问题简单的解决,所以选择好的算法对一个程序实现非常重要。

时间: 2024-10-10 07:05:55

软件工程概论-课后作业3(子数组求最大值)的相关文章

软件工程概论-课后作业1

需要网站系统开发需要掌握的技术 1.网页设计:Photoshop.Flash max.Dreamweaver 2.网站程序:Dreamweaver.Visual Studio .NET 会asp.asp.net.php.Jsp等一种编程语言和MSSQL或者MYSQL数据库. 本次课堂测试的源程序代码 运行结果截图 说明课堂测试未按时完成的原因 寒假学习不够认真,消极对待,把精力没有放在学习上. 列出你对这门课的希望和自己的目标,并具体列出你计划每周花多少时间在这门课上 我希望这门课能带给我新的能

软件工程概论课后作业1

网站系统开发需要掌握的技术:html.jsp技术.css样式技术.php技术: 本次课堂测试源代码: <%@page contentType="text/html" pageEncoding="UTF-8" %> <html> <head> </head> <body> <center> <h1>登陆操作!</h1> </center> <hr>

软件工程概论课后作业--输入法软件评估

使用的输入法:搜狗输入法. 用户界面:用户界面友好,可以下载各种风格的皮肤. 记住用户选择:能够记住用户选择,记住用户输入过的短语. 短期刺激:界面简洁,会定时推送一些热词.新词. 长期使用的好处或坏处:长期使用形成习惯感觉很好用,可以通过用户输入的首字母找到正确的字词,即使输入错误也能纠正. 不要让用户犯简单错误:暂时没有发现,而且能够自动纠错.

软件工程概论课堂作业3

题目:返回一个整数数组中最大子数组的和 要求: 输入一个一维整形数组,数组里有正数也有负数. 一维数组首尾相接,象个一条首尾相接带子一样. 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. 求所有子数组的和的最大值. 设计思想: 用户自定义数组长度并依次输入数组元素,设一个全局变量初始化为零的数组a[N],N=10000: 1.因为该数组首尾相接可视作一个环,那么我们需要在一个合适的位置断开,把数组元素展成一条笔直的带子. (1).设用户自定义数组长度为m,输入数组各元素值a[1

求子数组之和最大值

求子数组之和最大值 个人信息:就读于燕大本科软件工程专业 目前大三; 本人博客:google搜索"cqs_2012"即可; 个人爱好:酷爱数据结构和算法,希望将来从事算法工作为人民作出自己的贡献; 编程语言:C++ ; 编程坏境:Windows 7 专业版 x64; 编程工具:vs2008; 制图工具:office 2010 powerpoint; 硬件信息:7G-3 笔记本; 真言 让自己爆发吧,不要在安于现状了. 题目 求子数组之和最大值. 方案 我的算法执行如下,C++表示如下(

二维数组求子数组之和最大值(首尾相接, 圆柱)

问题:求二维数组的子数组之和的最大值(首尾相接,即形成圆柱) 成员: 陈晨:负责代码复审和代码测试计划 王颖瑞:负责程序分析,代码编程 思路:对于这个问题,我们可以结合之前的实验(二维数组求子数组之和的最大值和首尾相连一维数组的子数组之和的最大值),把为二维数组的列扩大二倍,之后想一维数组(首尾相连)一样,把二维数组分成不同的几个二维数组.之后就分开求不同的二维数组的子数组的最大值,最后之间比较,求出总的最大值. 代码: #include<iostream> using namespace s

首尾相接的数组的子数组的最大值

设计思想:输入一定长度的数组,分别以每个数为数组的开头,进行一维非环的数组求最大值,得出最大值,为首尾相接的数组的最大值, 程序源代码: package sumarray; import java.util.InputMismatchException; import java.util.Scanner; public class MaxSum { public static void main(String args[]) { int maxsum=0,sum=0;//maxsum为sum中的

编程之美——子数组和最大值

解法一:直接求解下标i~j的子数组和最大值:复杂度O(N^2): 代码如下: 1 #include<iostream> 2 using namespace std; 3 const int INF=1000000; 4 5 int maxSum(int arr[],int n); 6 7 int main() 8 { 9 int arr[7]={-2,5,3,-6,4,-8,6}; 10 cout<<maxSum(arr,7)<<endl; 11 return 0; 1

Algorithm One Day One--求输入的数组其子数组的最大值

算法是编程的灵魂,是编程思想的精髓----Algorithm One Day One /******************************************************************** created:2015年1月19日 00:20:59 author: Jackery T(n)=Ο(n) purpose: 本程序是求输入的一个数组,求其子数组的最大值: **************************************************