软件工程概论-合作作业01

一、要求

  求一整数数组(有负数)循环子数组之和的最大值。

二、思路

  1.从数组的后面排除小于0或者累加小于0的,用max记录被排除的子数组的和的最大值;

  2.循环则变化原数组,如{a0,a1,...an}则可以变化为{a0,a1,...an,a0,a1..an-1};

三、源代码

 1 #include <iostream>
 2 #include <iomanip>
 3 #include <vector>
 4 using namespace std;
 5 void showArray(vector<int> x)
 6 {
 7     if(x.size()==0)
 8         cout<<"NULL"<<endl;
 9     int len=x.size();
10     for(int i=0;i<len;i++)
11     {
12         cout<<setw(5)<<x[i];
13     }
14     cout<<endl;
15 }
16 int sonArrMax(vector<int> array)
17 {
18     if(array.size()==0) return -59659;
19     int len=array.size();
20     int maxNum=0;
21     int sum=0;
22     for(int i=0;i<len-1;i++)
23     {
24         array.push_back(array[i]);
25     }
26     len=array.size();
27     for(int i=0;i<len;i++)
28     {
29         sum+=array[i];
30         if(sum>maxNum)
31         {
32             maxNum=sum;
33         }
34         if(sum<0)
35         {
36             sum=0;
37         }
38     }
39     return maxNum;
40 }
41
42 void main()
43 {
44     vector<int> array;
45     int arr[]={1,2,-3,0,7,-8,5};//测试数组
46     for(int i=0;i<7;i++)
47         array.push_back(arr[i]);
48     /*int x,number;
49     cout<<"数组长度:"<<endl;
50     cin>>number;
51     cout<<"输入"<<number<<"个整数:"<<endl;
52     for(int i=0;i<number;i++)
53     {
54         cin>>x;
55         array.push_back(x);
56     }*/
57     cout<<"该数组为:"<<endl;
58     showArray(array);
59     cout<<"最大环子数组和为:"<<sonArrMax(array)<<endl;
60 }

四、实验结果

  

时间: 2024-12-17 06:10:28

软件工程概论-合作作业01的相关文章

软件工程概论个人作业01

一:设计思路: 1.随机产生2个0到99之间的随机数,用作运算数:随机产生1个0到3之间的数,分别代表运算符+,-,*,/. 2.if....else....语句控制输出的算式,for循环输出30道题. 3.当运算符为“/”号时,需要判断除数是否为0,如果为0,则循环次数加一. 4.为了保证随机种子的不同,需要用到srand(time(NULL))函数. 5.循环遍历已经出过的题,查看是否有重题. 二:源程序: #include<iostream> using namespace std; #

软件工程概论-合作作业02-四则运算网页答题

题目:四则运算web版:把程序变成一个网页程序,用户通过设定参数,就可以得到各种题目,并可实现在线答题并评判 四则运算web版的程序设计思想:之前的程序是可以用户自定义生成任意个数四则运算题目的,这次试验是要求写成web版的,用于给用户提供一一个在线答题的平台.这里需要用到Javaweb的方法,Javabean方法,jsp代码编写等方法. 源程序代码: javabean1: package DBBean; import java.sql.*; import java.util.*; public

软件工程概论课堂作业1

1.网站系统开发需要掌握的技术 (1)数据库链接技术 (2)JavaBean技术 (3)Servlet技术 (4)流行框架与流行XML技术 2.本次课堂测试的源程序代码 <%@ page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%><!DOCTYPE html PUBLIC "-//W3C//DTD H

软件工程概论课堂作业3

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

软件工程概论个人作业2

老师有将上次的作业进行了功能上的升级,加入了新的功能,所以我就将我的作业设计再次展示. 程序设计思路:上次的程序设计只是简单的两个数的四则运算,不需要对运算符的种类进行筛选,这次的作业我将上次的程序设计代码,进行了重新封装,设计了一个输入数据的方法,对不同的输入数据进行不同要求的生成式子,并对程序生成的式子进行判断是否符合标准.对符合要求的式子存放在string数组中,然后在数组中的式子输出到结果即可. 程序源代码: 1 package 四则运算; 2 3 import java.util.Sc

软件工程概论—第一次作业

①网站系统开发需要的技术有: 一.前台美工设计:Dreamweaver.Flash.Photoshop 二.网站编程:asp.asp.net.php.Jsp.JavaScript.MYSQL ②源代码程序: 1 <!doctype html> 2 3 <html> 4 5 <head> 6 7 <meta charset="utf-8"> 8 9 <title>登录界面</title> 10 11 </hea

软件工程概论个人作业03

第三次写四则运算了,这次又加了一些新的要求,简化了细节,但是在查重方面提出了更高的要求.这次也加上数据库了,存取都要在数据表中. 一.题目要求     二.程序设计思想 三.源代码 四.实验结果截图 五.反思 (1).

软件工程概论个人作业02(四则运算2)

1.设计思想: 在四则运算1的基础上,多加了几个要求,是否有乘除法可以通过不同的选择然随机生成符号的函数有时候生成两个数字对应加减,有时候生成四个数对应加减乘除:括号没有实现:数值范围通过一个函数实现(int)(Math.random()*(m-n+1)+n)生成n~m的数字:加减有无负数在减法出负数时输出提示语句:另外求余,即把参与运算的两个数都定义为int类型,比如a,b都为int,a/b=c,若不能整除,余数等于a-c*b. 2.源程序代码: import java.util.Random

软件工程概论-课后作业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