返回一个整型数组中最大子数组的和(02)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了返回一个整型数组中最大子数组的和(02)相关的知识,希望对你有一定的参考价值。

组员:刘伟 http://www.cnblogs.com/Lw-1573/p/5323542.html

1.要求:

输入一个整形数组,数组里有正数也有负数。
数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。
如果数组A[0]……A[j-1]首尾相邻,允许A[i-1],…… A[n-1],A[0]……A[j-1]之和最大。
同时返回最大子数组的位置。
求所有子数组的和的最大值。

2分析:

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

3代码:

 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 }

4截图:

技术分享

技术分享

5项目计划总结:

 

 

日期&&任务 听课 编写程序 阅读相关书籍 网上查找资料 日总计
周一 100 70   15 195
周二   40 45   95
周三   50 45 35 120
周四 100 40 40   180
周五   90   15 105
周六     40 15 65
周日     45   45
周总

 

 

 

 

 

 

 

 

6时间记录日志:

 

 

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

 

 

 

 

 

 

 

 

7缺陷记录日志:

 

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

 

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

 

 

 

以上是关于返回一个整型数组中最大子数组的和(02)的主要内容,如果未能解决你的问题,请参考以下文章

返回一个整数数组中最大子数组的和。(二人结对编程)

返回一个整数数组中最大子数组的和。(二人结对编程)

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

返回一个整数数组中最大子数组的和(文件)

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

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