一,要求

输入一个一维整形数组,数组里有正数也有负数。
一维数组首尾相接,象个一条首尾相接带子一样。
数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。

求所有子数组的和的最大值

二,设计思路

1,先随机生成一个数组,可以限制上下限的,包括正负数的。初始化当前和的值,最大和的值,还有小组起始和结束的位置,。

2,循环加和,每次循环比较当前和,与,最大和的大小,当当前和小于0 的时候舍弃当前和,重新定义起始位置为下一次循环的下标值。循环结束时记录小组起始和结束的位置,然后加和输出。

3,在每一次的循环中加入一个对数组重新排列的操作,就是把第一个位置上的数字放到最后一个位置上,然后其他数字一次放到前面一个的位置上。这样就相当于把数组变成了一个环。

三,代码

#include <iostream>
#include <stdlib.h>
#include <time.h>
#include <math.h>
using namespace std;
#define ARYSIZE 4 //数组大小
#define MIN -30
#define MAX 30
void main()
{int arry[ARYSIZE];srand((unsigned)time(NULL));//产生随机种子for(int i=0;i<ARYSIZE;i++){arry[i]=MIN+rand()%(MAX+abs(MIN)+1);cout<<arry[i]<<" ";}cout<<endl;int max=0;//保存最大和int curSum=0;//保存当前和int curStart=0;//当前和的起始位置int start=0;//最大和的起始位置int end=0;//最大和的终止位置int l=0,i,k;for(int i=0;i<ARYSIZE;i++){if(arry[i]<0)l+=1;}if(l==ARYSIZE)//如果Length个数均为负数{max=arry[0];for(i=0;i<ARYSIZE;i++)if(arry[i]>max){max=arry[i];}}else{max=0;for(i=0;i<ARYSIZE;i++){k=arry[0];for(i=0;i<ARYSIZE-1;i++){arry[i]=arry[i+1];}arry[ARYSIZE-1]=k;curSum=0;for(i=0;i<ARYSIZE;i++){if(curSum<0){curSum=0;curStart=i;}curSum=curSum+arry[i];if(curSum>max){max=curSum;start=curStart;end=i;}//当前和被保存为最大值,记录下它的起始位置和结束位置}}}cout<<"和最大的子数组为:"<<endl;if(start<=end){for(i=start;i<=end;i++){cout<<arry[i]<<" ";}cout<<"= "<<max;cout<<endl;}else{for(i=start;i<ARYSIZE;i++){cout<<arry[i]<<" ";}for(i=0;i<end;i++){cout<<arry[i]<<" ";}cout<<"= "<<max;cout<<endl;}}

四,运行截图

五,团队照

转载于:https://www.cnblogs.com/420Rock/p/5378459.html

返回一个一维整数数组中最大子数组的和02相关推荐

  1. 结对开发——返回一个整数数组中最大子数组的和 (首尾相接版)

    一.题目及题目要求 题目:返回一个整数数组中最大子数组的和. 要求: (1)输入一个整形数组,数组里有正数也有负数. (2)数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. (3)如果 ...

  2. 返回一个二维整数数组中最大子数组的和(二人结对)

    题目:返回一个二维整数数组中最大子数组的和 要求:1.输入一个二维整型数组,数组里有正数也有负数. 2.二维数组中连续的一个子矩阵组成一个子数组,每个子数组都有一个和. 3.求所有子数组的和的最大值. ...

  3. 返回一个整数数组中最大子数组的和---环形数组

    一.题目要求 题目:返回一个整数数组中最大子数组的和. 要求: 输入一个整形数组,数组里有正数也有负数. 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. 如果数组A[0]--A[j- ...

  4. 返回一个首尾相接的二维整数数组中最大子数组的和

    题目: ·返回一个二维整数数组中最大子数组的和. 要求: ·输入一个二维整形数组,数组里有正数也有负数. ·二维数组首尾相接,象个一条首尾相接带子一样. ·数组中连续的一个或多个整数组成一个子数组,每 ...

  5. 软件工程结对开发——返回一个整数数组中最大子数组的和(JAVA)

    题目:返回一个整数数组中最大子数组的和. 要求: 输入一个整型数组,数组里有正数也有负数: 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和: 求所有子数组的和的最大值.要求时间复杂度为 ...

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

    一.要求: (1)输入一个整形数组,数组里有正数也有负数. (2)数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. (3)如果数组A[0]--A[j-1]首尾相邻,允许A[i-1],. ...

  7. 课堂练习:返回一个二维数组中最大子数组的和

    1.题目: 返回一个二维数组中最大子数组的和. 2.要求: 输入一个二维整形数组,数组里有正数也有负数. 二维数组首尾相接,象个一条首尾相接带子一样. 数组中连续的一个或多个整数组成一个子数组,每个子 ...

  8. 返回一个循环数组中最大子数组的和

    设计思路 首先利用rand()函数随机产生一个一维数组,数组长度通过宏定义来控制.求首尾连接的一维数组的最大子数组的和我的思路是:循环N次(N是数组的长度)依次检测数组的最大子数组的和再比较大小,保留 ...

  9. 求二维整数数组中最大子数组的和(结对作业)

    题目:返回一个二维整数数组中最大子数组的和 要求:(1)输入一个二维整形数组,数组里有正数也有负数. (2)二维数组中连续的一个子矩阵组成一个子数组,每个子数组都有一个和. (3)求所有子数组的和最大 ...

  10. 整数数组中最大子数组求和02

    设计思路: 在"整数数组中最大子数组求和01"的基础上完成本次实验. 本次实验的关键在于如何判断结束. 经设计,程序结束条件有两种:1.截取部分有重复:2.循环完整两次. 满足其中 ...

最新文章

  1. 这是一名南京985AI硕士,CSDN博客专家
  2. 【南洋理工-CVPR2022】视觉语言模型的条件提示学习
  3. QWT6.14的编译、配置、使用(Qt Creator5.14.2)
  4. c++函数返回值与引用
  5. 【黑科技】在alv中设置字体样式
  6. python中怎么输入角度_在Python中更正两点之间的角度
  7. 浅谈javascript递归(白话版)
  8. oracle中的存储过程教程,oracle 存储过程
  9. 出现问题Debug Assertion Failed!
  10. 深度学习中的Normalization总结
  11. pytorh——Fully-connected
  12. 《MySQL必知必会》学习笔记——第八章(用通配符过滤)
  13. java档案管理系统_基于JAVA的简单档案管理系统
  14. 奥维怎么记录沿线轨迹_奥维地图怎么将已有线路画为轨迹
  15. 芒果DB:mongodb
  16. 初用vscode遇到中文乱码问题
  17. 大学本科基于html5毕业设计题目50例
  18. 政策频发,全国区块链应用不断涌现 | 产业区块链发展周报
  19. 基于SVM,KNN,CNN的数字图像识别
  20. 如何系统的学习linux?

热门文章

  1. 如何在存储过程中得到被调用存储过程的结果集
  2. activeMQ 填坑记
  3. Java中比较对象的两个接口Comparable接口和Comparator接口
  4. MySQL修改root密码
  5. 编写 Shell 脚本的最佳实践
  6. MySQL 5.7 SYS SCHEMA
  7. 【深度学习之美】卷地风来忽吹散,积得飘零美如画(入门系列之十)
  8. IIS6配置Asp.net MVC运行环境
  9. C#获得枚举类型的长度
  10. 浅谈WebService的调用转