一维环形数组求和

   组员:刘伟 李晨(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 }

项目计划总结:

日期&&任务听课编写程序阅读相关书籍网上查找资料日总计
周一100252515165
周二 30352590
周三 601535110
周四100303025185
周五 180 15195
周六  601575
周日  15 15
周总计200325180130835

时间记录日志  

 

日期开始时间结束时间中断时间净时间活动备注
3/2114:0015:5010100听课软件工程上课
 17:1017:20 10阅读书籍《构建之法》《人月神话》
 21:0021:25 20网上查找资料 
3/2214:0015:0010110结对编程编写老师布置的作业
 16:0017:0010110看书《人月神话》
3/2321:0021:30 30结对编程编写老师布置的作业
3/2414:0015:5010100听课软件工程上课
3/2516:0018:00 120结对编程编写老师布置的作业
3/269:009:30 30看书《构建之法》
3/279:009:30 30看书《人月神话》

 

缺陷记录日志:

       

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

 

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

 

 

 

 
好文要顶  关注我  收藏该文   

 

转载于:https://www.cnblogs.com/Lw-1573/p/5326331.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值