结对开发——求最大值

一、题目:

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

  要求:

  1.输入一个整形数组,数组里有正数也有负数。

  2.数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。

  3.求所有子数组的和的最大值。要求时间复杂度为O(n)。

二、设计思路

  1.数组num[]长度已确定是N,将数组中字数组的和放到数组sum[]中;

  2.sum[0]=num[0],sum[1]=num[0]+num[1],sum[2]=num[0]+num[1]+num[2]……;

     sum[N]=num[1],sum[N+1]=num[1]+num[2]……如此循环,直至所有自己的和全部存进  数组sum中;

  3.然后求出数组sum中的最大值,再输出结果;

      4.单独判断一些特殊的容易计算的情况,比如全是负数、全是正数、只有一个正数。这样能有效地提高程序的效率。

三、源代码

 1 // 求和.cpp : Defines the entry point for the console application.
 2 // 2015/3/18 16:12 袁佩佩 于海洋 信1201-1班
 3 
 4 #include "stdafx.h"
 5 #include"iostream.h"
 6 #define SIZE 5                                    //数组的个数
 7 #define MAXSIZE 100                                //子集个数的最大值
 8 void CaculateSum(int sum[],int length,int num[])//计算数组中各个子集的和
 9 {
10     int j=0;
11     for(int i=0;i<SIZE;i++)
12     {
13         for(int k=i;k<SIZE;k++)
14         {
15             if(i==k)
16             {
17                 sum[j]+=num[k];
18             }
19             else
20             {
21                 sum[j]=sum[j-1]+num[k];
22             }
23             j++;
24         }
25     }
26 }
27 //求所有情况的个数
28 int GetAcc()
29 {
30     int acc=0;
31     for(int i=1;i<=SIZE;i++)
32     {
33         acc+=i;
34     }
35     return acc;
36 }
37 //找出数组中的最大值,length是b[]中的个数
38 int GetMax(int b[],int length)
39 {
40     int max=b[0];
41     for(int i=0;i<length;i++)
42     {
43         if(max<b[i])
44         {
45             max=b[i];
46         }
47     }
48     return max;
49 }
50 int main()
51 {
52     int num[SIZE],sum[MAXSIZE],max=0,acc;
53     int count[2]={0,0};                        //num[num]是要求的整数count[2]中是负数和正数的个数
54     cout<<"请输入"<<SIZE<<"个整数:";
55     for(int i=0;i<SIZE;i++)                    //计算数组中正数和负数的个数
56     {
57         cin>>num[i];
58         if(num[i]<0)
59             count[0]++;                        //负数的个数
60         else
61             count[1]++;                        //正数
62     }
63     acc=GetAcc();
64     for(i=0;i<acc;i++)
65     {
66         sum[i]=0;
67     }
68     if(count[0]==0)                            //若全是正数的话
69     {
70         for(int i=0;i<SIZE;i++)
71         {
72             max+=num[i];
73         }
74     }
75     else if((count[1]==0)||(count[0]==1))    //若全是负数或者有一个正数
76     {
77         max=GetMax(num,SIZE);
78     }
79     else                                    //其他情况
80     {
81         CaculateSum(sum,acc,num);
82         max=GetMax(sum,acc);
83     }
84     cout<<"最大子集的和是:"<<max<<endl;
85     return 0;
86 }

四、结果截图

五、心得体会

  我和于同学之前就经常合作,所以这次搭档还算顺利。我俩上课的时候就讨论出了这个题目的大体思路,今天我们又对算法的具体实现进行了讨论和调试。

  俗话说:“男女搭配,干活不累。”我比较细心,他比较有执行力。于同学可以带起整个编程创作的气氛,我也很快进入状态,能够及时准确的发现他的错误并快速改正。整个过程效率比自己编程时要高。

  其实一开始我根据我和搭档确定的思路写出了算法,但是运行时有错并且特别复杂。我们调试了几次都没能成功,于是他就换了种思考方式,很快写了新的算法。经过几次调试之后,程序成功运行了。这一点我挺欣赏他的,因为它发现这条路走不通或特别难走时,可以马上改变路径正确的到达目的地。

六、有图有真相

  请无视我那无神的双目,和那油油的头发...

 

转载于:https://www.cnblogs.com/JJJanepp/p/4346942.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/431944.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

浏览器获取设备信息_一条命令获取 IE 浏览器保存网站的账号和密码信息

渗透攻击红队一个专注于红队攻击的公众号大家好&#xff0c;这里是 渗透攻击红队 的第 41 篇文章&#xff0c;本公众号会记录一些我学习红队攻击的复现笔记(由浅到深)&#xff0c;不出意外每天一更Powershell内网渗透一直以来都是一个热门话题&#xff0c;试想在一个大型的内网…

__bridge,__bridge_retained,__bridge_transfer

最近遇到类型转换需要添加__bridge等开始不是很理解&#xff0c;后面查询资料才知道在CFObject 与 NSObject 之间转换时&#xff0c;ARC是不能管理Core Foundation object的生命周期。 在CFObject 与 NSObject 之间转换时&#xff0c;需要用到__bridge,__bridge_retained,__bri…

thinkphp5 判断数据是否存在_ThinkPHP 5.1 中间件中判断要访问的操作是否存在

ThinkPHP 5.1 中间件中判断要访问的操作是否存在ifu25 • 2021 年 01 月 15 日按惯例还是吐槽 ThinkPHP 官方社区极度不友好&#xff0c;提问基本得不到答案&#xff0c;更很少有官方人员回复。ThinPHP 5.1 中间件判断 action 是否存在中间件public function handle($request, …

NodeJS 学习记录

一、环境 1. 操作系统&#xff1a;win7, 32位 2. nodejs版本&#xff1a;v0.12.0 3. npm版本&#xff1a;2.5.1 二、问题 1. npm安装镜像源问题 国外镜像源很慢&#xff0c;国内出名且公开的有淘宝&#xff0c;也有内部未公开的&#xff0c;比如我所在的公司 示例&#xff1a; …

(转) 一步一步学习ASP.NET 5 (四)- ASP.NET MVC 6四大特性

转发&#xff1a;微软MVP 卢建晖 的文章&#xff0c;希望对大家有帮助。原文&#xff1a;http://blog.csdn.net/kinfey/article/details/44459625 编者语 &#xff1a; 昨晚写好的文章居然csdn不审核&#xff0c;这个也难怪人&#xff0c;但自己比较忙没办法。分享继续&#xf…

mysql sql执行过程_MySQL探秘(二):SQL语句执行过程详解

昔日庖丁解牛&#xff0c;未见全牛&#xff0c;所赖者是其对牛内部骨架结构的了解&#xff0c;对于MySQL亦是如此&#xff0c;只有更加全面地了解SQL语句执行的每个过程&#xff0c;才能更好的进行SQL的设计和优化。 当希望MySQL能够以更高的性能运行查询时&#xff0c;最好的办…

Java——容器(泛型)

【泛型】 起因&#xff1a;JDK1.4之前类型不明确<1>装入集合的类型都被当做Object对待&#xff0c;从而失去自己的实际类型。<2>从集合中取出时往往需要转型&#xff0c;效率低&#xff0c;且很容易出错。解决办法&#xff1a;<1>在定义集合的时候同时定义集…

quartz mysql 初始化_quartz scheduler 从数据库初始化

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里云数据库专家保驾护航&#xff0c;为用户…

mysql group by 慢_mysql“group by”查询非常慢

我在一个有大约100k记录的表中有这个查询,它运行得很慢(3-4s),当我取出组时它更快(少于0.5s).我很想知道如何解决这个问题&#xff1a;SELECT msg.id,msg.thread_id,msg.senderid,msg.recipientid,from_user.username AS from_name,to_user.username AS to_nameFROM msgtable A…

拦截QT关闭窗口的CloseEvent

QDialog类下有一个虚函数 void QDialog::closeEvent ( QCloseEvent * e ) [virtual protected] 通过实现closeEvent函数&#xff0c;就可以以对关闭窗口消息进行拦截&#xff0c;比如程序还没有完成工作时&#xff0c;可以弹出警告窗口&#xff0c;即使用户确认退出操作…

mysql8.0本机登录要1秒_Mysql8.0的登录大坑……(忘记登录密码也可以这么搞)

关于安装和使用就不说了&#xff0c;属于基本操作了&#xff1b;我来重点记录一下关于使用前&#xff0c;使用navicat登录的时候报错&#xff0c;1130和2059查看安装后随机生成的密码&#xff1a; grep temporary password /var/log/mysqld.log原因&#xff1a;mysql8的密码验证…

Gmail邮箱添加域名解析

主机记录 MX 服务器地址 优先级 MX ASPMX.L.GOOGLE.COM. 10 MX ALT1.ASPMX.L.GOOGLE.COM. 20 MX ALT2.ASPMX.L.GOOGLE.COM. 20 MX ASPMX2.GOOGLEMAIL.COM. 30 MX ASPMX3.GOOGLEMAIL.COM. 30 MX ASPMX4.GOOGLEMAIL.COM. 30 MX ASPMX5.GOOGLEMAIL.COM. 3…

tidb vs mysql_一个长耗时SQL在TiDB和Mysql上的耗时测试

之前看到的TiDB和MySql的性能对比都是大量短耗时请求下的压测&#xff0c;单机情况下TiDB和MySql的确有些差距&#xff0c;不过笔者最近碰到的场景更多是sql要扫描的行数不小的情况下单sql比较耗时的问题&#xff0c;所以自己做了个简单测试这类型sql的耗时。TiDB单机环境部署g…

Oracle存储过程(转)

存储过程 1 CREATE OR REPLACE PROCEDURE 存储过程名 2 IS 3 BEGIN 4 NULL; 5 END; 行1: CREATE OR REPLACE PROCEDURE 是一个SQL语句通知Oracle数据库去创建一个叫做skeleton存储过程, 如果存在就覆盖它; 行2: IS关键词表明后面将跟随一个PL/SQL体。 行3: BEGIN关键词表明…

win10 python 调用模块_python常识系列14--gt;python通过jpype模块调用jar包

前言能坚持一件事&#xff0c;本身就是一种很了不起的才华。一、jpype模块是什么&#xff1f;能够让 python 代码方便地调用 Java 代码的工具二、jpype模块安装安装和其它模块没区别&#xff0c;但是注意模块名 是 jpype1 &#xff0c;后面有个1pip install jpype1三、jpype模块…

js 定时器

Document自带的方法&#xff1a; 循环执行&#xff1a;var timeid window.setInterval&#xff08;“方法名或方法”&#xff0c;“延时”&#xff09;;window.clearInterval(timeid); 定时执行&#xff1a;var tmid window.setTimeout(“方法名或方法”, “延时”);window.c…

mysql 载入主体时出错_mysql遇到load data导入文件数据出现1290错误的解决方案

错误出现情景在cmd中使用mysql命令&#xff0c;学生信息表添加数据。使用load data方式简单批量导入数据。准备好文本数据&#xff1a; xueshengxinxi.txt 文件 数据之间以tab键进行分割执行 “load data infile 文本数据路径 into table tab_load_data” 弹出错误。#load d…

JavaScript快速入门(四)——JavaScript函数

函数声明 之前说的三种函数声明中&#xff08;参见JavaScript快速入门&#xff08;二&#xff09;——JavaScript变量&#xff09;&#xff0c;使用Function构造函数的声明方法比较少见&#xff0c;我们暂时不提。function func() { }和var func function() { }除了在声明提升…

mysql 5.6 ibdata1_mysql 里的 ibdata1 文件不断的增长?

我们在 Percona 支持栏目经常收到关于 MySQL 的 ibdata1 文件的这个问题。当监控服务器发送一个关于 MySQL 服务器存储的报警时&#xff0c;恐慌就开始了 —— 就是说磁盘快要满了。一番调查后你意识到大多数地盘空间被 InnoDB 的共享表空间 ibdata1 使用。而你已经启用了 inno…

HashMap解读

hashcode()方法和equals()方法。使用这两个方法&#xff0c;一个对象能够存储或从一个Hashtable&#xff0c;HashMap&#xff0c;HashSet 被检索。 hashcode(): This method is used to get unique integer for given object. This integer is used to find bucket when storin…