求首位相连一维数组最大子数组的和

结对成员:

朱少辉:主要负责代码编写

侯涛亮:主要负责程序测试

题目:一个首尾相接的一维整型数组,其中有正有负,求它的最大子数组并返回它的位置。

思路:在求一维子数组的基础上,先输入一个含有N个数的一维数组,将此数组向后平移N个使数组长度变为2N个,前N个和后N个值相等。再求这长度为2N的数组最大子数组之和,也就是求从第i个(i=0,1,2..n-1)到第i+n(不包含i+n)个中求最大的子数组和。这样会从0-N-1产生产生N个最大子数组的和,把这N个值存到另个数组中,求出最大值即为首位衔接一维子数组的最大值。该算法的时间复杂度为o(n^2)。

代码:

#include<iostream>
#include<cmath>
using namespace std;
void main()
{int a[25000],i,j,n,MaxSum,k,m,h,p;int f=0;int b[10],d[10];cout<<"请输入数组中数字的个数"<<endl;cin>>n;cout<<"请输入数组"<<endl;for(i=0;i<n;i++){cin>>a[i];}for(i=n;i<2*n;i++){a[i]=a[i-n];}cout<<endl;for(i=0;i<n;i++){k=0;MaxSum=0;h=i;for(j=i;j<i+n;j++){k += a[j];if(k > MaxSum){ MaxSum = k;h=j;}if(k < 0){k = 0;}}d[i]=h;b[i]=MaxSum;}int c=b[0];m=0;h=0;for(i=1;i<n;i++){if(c<=b[i]){c=b[i];m=i;h=d[i];}}p=h-n+1;if(p<=0){   p=n;}cout<<"从第"<<m+1<<"个到第"<<p<<""<<endl;cout<<"最大子数组为"<<endl;for(i=m;i<h+1;i++){ cout<<a[i]<<" ";}cout<<endl;cout<<"最大子数组之和为"<<c<<endl;}

截图

总结:这次的程序是上次程序的进化,具体思路还是一样的。由此可见许多程序的算法都是有关联的,我们要学会继承和创新。此外结对开发过程中,队友之间的配合,沟通,交流和信任也是十分重要的。通过几次的合作我们都有了很大的进步。

转载于:https://www.cnblogs.com/bingoing/p/4421671.html

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

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

相关文章

SpringBoot接口幂等性实现的4种方案!

作者 | 超级小豆丁来源 | www.mydlq.club/article/94目录什么是幂等性什么是接口幂等性为什么需要实现幂等性引入幂等性后对系统的影响Restful API 接口的幂等性如何实现幂等性方案一&#xff1a;数据库唯一主键方案二&#xff1a;数据库乐观锁方案三&#xff1a;防重 Token 令…

scala 数组合并_Scala程序合并两个数组或数组缓冲区

scala 数组合并Scala | 合并两个数组 (Scala | Merging two arrays) Arrays are important data structures in programming and there may arise times when we have two different arrays and we need to merge them into one for processing. This is the case when you nee…

js的navigator对象的使用(浏览器信息)

window.navigator 对象包含有关访问者浏览器的信息。 <!DOCTYPE html> <html> <body> <div id"example"></div><script>txt "<p>Browser CodeName: " navigator.appCodeName "</p>"; txt &…

http中指定使用worker/prefork

注意&#xff1a; 2.4之前版本默认为prefork&#xff0c; 2.4已经变为event模式。三种模式比较&#xff1a; http://www.cnblogs.com/fnng/archive/2012/11/20/2779977.html在编译apache的时候&#xff0c;有一个参数叫做 --with-mpm... 等号后边用于指定那种模式&#xff…

Redis为什么变慢了?一文详解Redis性能问题 | 万字长文

Redis 作为优秀的内存数据库&#xff0c;其拥有非常高的性能&#xff0c;单个实例的 OPS 能够达到 10W 左右。但也正因此如此&#xff0c;当我们在使用 Redis 时&#xff0c;如果发现操作延迟变大的情况&#xff0c;就会与我们的预期不符。你也许或多或少地&#xff0c;也遇到过…

Java PipedOutputStream flush()方法与示例

PipedOutputStream类flush()方法 (PipedOutputStream Class flush() method) flush() method is available in java.io package. flush()方法在java.io包中可用。 flush() method is used to flush this PipedOutputStream and forces bytes to be written out of any buffered…

蜕变成蝶~Linux设备驱动之字符设备驱动

一、linux系统将设备分为3类&#xff1a;字符设备、块设备、网络设备。使用驱动程序&#xff1a; 字符设备&#xff1a;是指只能一个字节一个字节读写的设备&#xff0c;不能随机读取设备内存中的某一数据&#xff0c;读取数据需要按照先后数据。字符设备是面向流的设备&#x…

Android 手机发送短信

参照网上的例子&#xff0c;做了一个手机发送短信的app。 有两种发送方法&#xff1a;第一种方法测试没有信息的发送记录&#xff0c;第二种调用的sms的Activity还要自行操作。 首先是xml布局文件代码&#xff1a; <LinearLayout xmlns:android"http://schemas.andro…

感动哭了!《Java 编程思想》最新中文版开源!

前言还记得这本书吗&#xff1f;是不是已经在你的桌上铺满厚厚的一层灰了&#xff1f;随着 Java 8 的出现&#xff0c;这门语言在许多地方发生了翻天覆地的变化。最新版已经出来了&#xff0c;在新的版本中&#xff0c;代码的运用和实现上与以往不尽相同。本书可作为编程入门书…

Java Process getOutputStream()方法与示例

流程类的getOutputStream()方法 (Process Class getOutputStream() method) getOutputStream() method is available in java.lang package. getOutputStream()方法在java.lang包中可用。 getOutputStream() method is used to get the output stream of the process and sub-p…

android中requestFocus 以及与setFocusable的区别

<requestFocus /> 标签用于指定屏幕内的焦点View。 例如我们点击tab键或enter键焦点自动进入下一个输入框 用法: 将标签置于Views标签内部 <span style"font-size:14px;"> <EditText id"id/text"android:layout_width"…

韩信大招:一致性哈希

作者 | 悟空聊架构来源 | 悟空聊架构韩信点兵的成语来源淮安民间传说。常与多多益善搭配。寓意越多越好。我们来看下主公刘邦和韩信大将军的对话。刘邦&#xff1a;“你觉得我可以带兵多少&#xff1f;”韩信&#xff1a;“最多十万。”刘邦不解的问&#xff1a;“那你呢&#…

mysql连接非常慢的觖决办法及其它常见问题解决办法

2019独角兽企业重金招聘Python工程师标准>>> 编辑/etc/mysql/my.cnf 在[mysqld]段中加入 skip-name-resolve 重启mysql 禁用DNS反响解析&#xff0c;就能大大加快MySQL连接的速度。 转载于:https://my.oschina.net/ydsakyclguozi/blog/401768

Java SimpleTimeZone toString()方法与示例

SimpleTimeZone类toString()方法 (SimpleTimeZone Class toString() method) toString() method is available in java.util package. toString()方法在java.util包中可用。 toString() method is used for string denotation of this SimpleTimeZone. toString()方法用于此Sim…

最常见的10种Java异常问题!

封面&#xff1a;洛小汐译者&#xff1a;潘潘前言本文总结了有关Java异常的十大常见问题。目录检查型异常&#xff08;checked&#xff09; vs. 非检查型异常&#xff08;Unchecked&#xff09;异常管理的最佳实践箴言为什么在try代码块中声明的变量不能在catch或者finally中被…

OSSIM学习-英汉对照注释

Ossim的Web UI目前没有很好的本地化解决方案&#xff0c;这给不少初学Ossim的用户尤其是英文不太好的人来说&#xff0c;带来了一些麻烦&#xff0c;下面是部分英汉对照注释&#xff0c;并在不断完善中&#xff0c;希望对大家学习过程中&#xff0c;有所帮助。Action 动作Actio…

Cookie的设置获取和删除

关于Cookie操作的实验&#xff0c;包括设置&#xff0c;获取和删除。 设置Cookie name[必选]value[必选]expiredays[必选]setCookie getCookie 操作Cookie GETDEL 以下是源代码&#xff1a; <html><head><meta charset"utf-8" /><script type&q…

observable_Java Observable clearChanged()方法与示例

observable可观察的类clearChanged()方法 (Observable Class clearChanged() method) clearChanged() method is available in java.util package. clearChanged()方法在java.util包中可用。 clearChanged() method represents that this object has no longer changed or in o…

Linux中Samba详细安装

为了实现Windows主机与Linux服务器之间的资源共享&#xff0c;Linux操作系统提供了Samba服务&#xff0c;Samba服务为两种不同的操作系统架起了一座桥梁&#xff0c;使Linux系统和Windows系统之间能够实现互相通信&#xff0c;为广泛的Linux爱好者提供了极大方便。本文简要介绍…

Java ObjectInputStream close()方法与示例

ObjectInputStream类close()方法 (ObjectInputStream Class close() method) close() method is available in java.io package. close()方法在java.io包中可用。 close() method is used to close this ObjectInputStream and free any system resources linked with this str…