码迷,mamicode.com
首页 > 编程语言 > 详细

数组结对开发

时间:2015-03-17 20:00:14      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:

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

要求:输入一个整形数组,数组里有整数也有负数;

数组中连续的一个或多个整数组成一个整数组每个子数组都有一个和;

求所有子数组的和的最大值,要求时间复杂度为O(n)。

思路:设数组为a[5],则所有子数组的和可以为

(1)  a[0]+a[1]+a[2]+a[3]+a[4](2)a[1]+a[2]+[3]+a[4]

 a[0]+a[1]+a[2]+a[3]           a[1]+a[2]+[3]

a[0]+a[1]+a[2]                    a[1]+a[2]

a[0]+a[1]                            a[1]

a[0]

       ……….以此类推五个分组,每个分组都有它的最大值,存放在数组max[5]中,最后得出数组max[5]的最大值即为题目所求。

具体实现代码:

 1 #include<iostream.h>
 2 #include<conio.h>
 3 int main()
 4 {
 5     int arr[5];
 6     int i,j;
 7     int max[5];
 8     int jixu;
 9     cout<<"input array:"<<endl;
10     for(i=0;i<5;i++)
11     {
12         cin>>arr[i];
13     }
14     for(i=0;i<5;i++)
15     {
16         max[i]=arr[i];
17     }
18     for(j=0;j<4;j++)
19     {
20         for(i=j+1;i<5;i++)
21         {
22             arr[j]=arr[j]+arr[i];
23             if(max[j]<arr[j])
24             {
25             max[j]=arr[j];
26             }
27         }
28     }
29     for(i=0;i<5;i++)
30     {
31         if(max[0]<max[i])
32             max[0]=max[i];
33     }
34     cout<<"ADDmax="<<max[0]<<endl;
35     cout<<"是否要继续?jixu(0,退出  1,继续)"<<endl;
36     cin>>jixu;
37     if(jixu==1)
38     {
39         cout<<endl;
40         main();
41     }
42     else
43     {
44         return 0;
45     }
46     getch();
47     return 0;
48 
49 }

 

测试代码的思路:整数包括正整数,零,负整数。因此需要将三种整数情况考虑在内。具体测试时我们用了4组数据进行测试,分别为:

(1)0,0,0,0,0

(2)1,1,1,1,1

(3)-1,-1,-1,-1,-1

(4)1,0,2,-1,3

经过测试,程序运行良好,具体截图如下:

技术分享

 

结对体会:

通过这次的结对活动,体会到了团队合作的重要。老师布置完作业后,我和小伙伴各自有不同的想法,相互交流想法后发现了各自的优缺点,经过意见统一以及编程和测试时的相互帮助,最终快速完成了老师布置的任务。第一次迅速完成任务,让我意识到了结对开发的重要。

我和小伙伴的合影:

技术分享

 

数组结对开发

标签:

原文地址:http://www.cnblogs.com/xiaojin123/p/4345161.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!