一维环形数组求和

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一维环形数组求和相关的知识,希望对你有一定的参考价值。

   组员:刘伟 李晨(http://www.cnblogs.com/jiajun1/ 

一 题目及要求:

      题目:返回一个整数数组中最大子数组的和

      要求(新加):①如果数组A[0]...A[j-1]首尾相邻,允许A[i-1]...A[n-1],A[0]...A[j-1]之和最大;

                          ②同时返回最大子数组的位置。

二 设计思想:

    这个题目是在上个题目的基础的加上数组首位相连,并该数组最大子数组的和,实现方法就是把环变成直线的方法,在输入数组的时候把数组扩充一倍,然后求以每个数作为开始的,长度为n的,最大子数组的值,就可以得到结果

 1 #include<iostream>
 2 #include<time.h>
 3 #include<stdlib.h>
 4 #define N 100000
 5 using namespace std;
 6 int main()
 7 {
 8     int a[N];
 9     int start,end,i, sum,max,m,n;
10      cout<<"请输入个数:";
11      cin>>n;
12      m=n;
13      cout<<"请输入数组:";
14     for( i=0;i<n;i++)
15     {
16         cin>>a[i];
17         a[i+n]=a[i];
18     }
19     max=a[0];
20     start=0;
21     end=0;
22     for(int j=0;j<n;j++)
23     {
24         sum=0;
25         for(int k=j;k<n+j;k++)
26         {
27             sum=sum+a[k];
28             if(sum>max)
29             {
30                 max=sum;
31                 start=j+1;
32                 end=k+1;
33             }
34         }
35     }
36     cout<<"最大子数组的值为:"<<" "<<max<<endl;
37     cout<<"开始于第"<<start<<"个数"<<"    "<<"结束在第"<<end%n<<"个数"<<endl;
38     cout<<"这个子数组为:";
39     for(int c=0;c<end-start+1;c++)
40     {
41         cout<<a[start+c-1]<<"  ";
42     }
43 }

技术分享技术分享

项目计划总结:

日期&&任务 听课 编写程序 阅读相关书籍 网上查找资料 日总计
周一 100 25 25 15 165
周二   30 35 25 90
周三   60 15 35 110
周四 100 30 30 25 185
周五   180   15 195
周六     60 15 75
周日     15   15
周总计 200 325 180 130 835

时间记录日志  

 

日期 开始时间 结束时间 中断时间 净时间 活动 备注
3/21 14:00 15:50 10 100 听课 软件工程上课
  17:10 17:20   10 阅读书籍 《构建之法》《人月神话》
  21:00 21:25   20 网上查找资料  
3/22 14:00 15:00 10 110 结对编程 编写老师布置的作业
  16:00 17:00 10 110 看书 《人月神话》
3/23 21:00 21:30   30 结对编程 编写老师布置的作业
3/24 14:00 15:50 10 100 听课 软件工程上课
3/25 16:00 18:00   120 结对编程 编写老师布置的作业
3/26 9:00 9:30   30 看书 《构建之法》
3/27 9:00 9:30   30 看书 《人月神话》

 

缺陷记录日志:

       

日期 编号 类型 引入阶段 排除阶段 修复时间 修复缺陷
3月26日 1   编码 编码 10min  

 

在环变链的时候出现了错误,最后用循环和拓展数组解决

 

 

 

 
好文要顶 关注我 收藏该文 技术分享 技术分享

 

以上是关于一维环形数组求和的主要内容,如果未能解决你的问题,请参考以下文章

python数组求和

环形链表(哈希表链表)寻找两个正序数组的中位数(数组二分查找)二进制求和(位运算数学)

一维数组求和2

使用共享内存对三维数组的一维求和

php二维数组,相同值求和,并返回新的数组

reduce()方法:求和求乘积数组中每个元素出现的次数去重二维和多维数组转为一维数组