博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
结对开发4_循环数组的最大值
阅读量:6621 次
发布时间:2019-06-25

本文共 2220 字,大约阅读时间需要 7 分钟。

一、思路

    考虑到数组需要首尾相连,我们采取把数组的长度增加两倍,并把复制的数组写在在最后一个数的后面,

  这样在循环的过程中并不需要采用新的算法,只要把原来的代码稍微修改一下,加一个判断使得组成最大数组的

  长度不超过原数组的长度即可。

二、源代码

  

/*======================================================================            # Author: TianYongTao && ZhangYaPeng            # E-Mail: 714251829@qq.com            # Last modified: 2015-03-28 20:48            # Filename: Demo.cpp            # Description: 计算一维回环数组中的最大子数组并将其输出======================================================================*/# include "stdafx.h"# include 
using namespace std;# define LENGTH 5int MaxSubArr(int * arr,int & start,int & count) //start保存最大子数组起始点 count保存最大子数组长度{ int max = 0; int max1 = arr[0]; //max1保存的是全部为负数的数组中的最大值 int temp = 0; bool flag=false; for(int i=0;i<2*LENGTH;i++) //判断数组元素是否全部小于零 { if(arr[i]>0) { flag=true; } if(arr[i]>=max1) { max1=arr[i]; start = i; } } if(!flag) { count=1; return max1; //返回全部是负数的数组中最大的那个负数 } start=0; for(int i=0;i<2*LENGTH;i++) //数组不全小于零时遍历一遍求出最大子数组 { temp+=arr[i]; count++; if(temp>max) { max = temp; } if(temp<=0) //如果在数组叠加过程中和小于0 则舍去 从该部分后面重新叠加 { temp=0; start=i+1; count=0; } if(count==LENGTH) { if(arr[i]<0) { count--; } return max; } } return max;}int main(){ int Arr[LENGTH]; int Array[2*LENGTH]; //以2倍首尾相接数组代替回环数组 int start=0; int count=0; cout<<"请输入"<
<<"个整数(可正可负): "; for(int i=0;i
>Arr[i]; } int k=0; for(int i=0;i<2*LENGTH;i++) { Array[i] = Arr[k++]; if(k==LENGTH) { k=0; } } int max = MaxSubArr(Array,start,count); cout<<"最大子数组序列为:"; for(int i=0;i

三、运行结果

  

四、总结

    对于相加的数组,若全为负数,只需比较大小,输出数组中最大的负数即可,如果有正有负,则依次相加比较。

  其他的和结对开发1的思想大致一样。

五、照片

  

转载于:https://www.cnblogs.com/littlechar/p/4377764.html

你可能感兴趣的文章
推荐15款制作 SVG 动画的 JavaScript 库
查看>>
陀螺仪原理--网上转载
查看>>
转:OpenResty最佳实践(推荐了解lua语法)
查看>>
转:CEO, CFO, CIO, CTO, CSO是什么
查看>>
P2P之UDP穿透NAT的原理与实现 - 增强篇(附修改过的源代码)
查看>>
添加 All Exceptions 断点后, 每次运行都会在 main.m 中断的一种解决方法
查看>>
[Ubuntu] fg、bg让你的进程在前后台之间切换
查看>>
二维数组与类的定义_DAY06
查看>>
ROC曲线(receiver-operating-characteristic curve)-阈值评价标准(转)
查看>>
Swift 表达式
查看>>
FFmpeg(8)-打开音视频解码器,配置解码器上下文(avcodec_find_decoder()、avcodec_alloc_context3())...
查看>>
Javascript基础恶补
查看>>
andriod自定义视图
查看>>
linux下vim更改注释颜色
查看>>
在SSL / https下托管SignalR
查看>>
Using JRuby with Maven
查看>>
poj 3308 (最大流)
查看>>
Netty了解与小试
查看>>
醒醒吧少年,只用Cucumber不能帮助你BDD
查看>>
众安质量学堂文章汇总
查看>>