博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
求一个环形数组最大子数组的和
阅读量:5301 次
发布时间:2019-06-14

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

假如我们输入一个一维的数组,数组中既有正数也有负数,而且这个数组首尾相接,就像一个圆圈。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值,如何用编程的语言实现?

设计思想:
1.首先定义一个数组与这个数组的长度,然后输入这个数组。
2.再定义一个新的数组,此数组把第一个数组的数字存储后再存储一次(用for循环进行数组信息的存储),例子:如第一个数组为4 5 6 ;则第二个数组为4 5 6 4 5 6 。
3.再定义三个 int 类型的变量, nowsum(保存暂时的和)、maxsum(保存和的最大值)还有 x(用于控制开始位置和子数组的最大长度,不能高于第一个数组的长度)。运用for循环进行对nowsum的更新,如果 nowsum>maxsum,则 maxsum 进行更新,反之不更新。例子:如第一个数组为4 5 6 ;则第二个数组为4 5 6 4 5 6 。nowsum 依次为4,4 5,4 5 6,5,5 6,5 6 4,……最终结果为15,子数组为4 5 6。
下面是具体的代码:

#include "stdafx.h"#include 
int _tmain(int argc, _TCHAR* argv[]){ int i,k=0,count,count2,num1[100],num2[100]; printf("请输入数字个数,不超过50:"); scanf("%d",&count); count2=count*2; printf("请输入数字:"); for(i=0;i
maxsum) { maxsum=nowsum; } else { maxsum=maxsum+0; } if(i==count-1+x) { x++; if(x

 最后附上我们合作的照片:

转载于:https://www.cnblogs.com/njzy123456/p/9899688.html

你可能感兴趣的文章
asp.net 调用前台JS调用后台,后台掉前台JS
查看>>
Attribute(特性)与AOP
查看>>
苹果手表:大方向和谷歌一样,硬件分道扬镳
查看>>
Competing Consumers Pattern (竞争消费者模式)
查看>>
Android面试收集录15 Android Bitmap压缩策略
查看>>
PHP魔术方法之__call与__callStatic方法
查看>>
ubuntu 安装后的配置
查看>>
web前端之路,js的一些好书(摘自聂微东 )
查看>>
【模板】对拍程序
查看>>
【转】redo与undo
查看>>
解决升级系统导致的 curl: (48) An unknown option was passed in to libcurl
查看>>
Java Session 介绍;
查看>>
spoj TBATTLE 质因数分解+二分
查看>>
Django 模型层
查看>>
dedecms讲解-arc.listview.class.php分析,列表页展示
查看>>
Extjs6 经典版 combo下拉框数据的使用及动态传参
查看>>
【NodeJS】http-server.cmd
查看>>
研磨JavaScript系列(五):奇妙的对象
查看>>
面试题2
查看>>
selenium+java iframe定位
查看>>