一、题目

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

要求:

输入一个整形数组,数组里有正数有负数

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

求所有子数组的和的最大值

二、解题思路

1、以输入三个数为例进行比较

2、分三种情况,分别为一个数,两个数相加和三个数相加

3、分别求得三种情况的最大值,进行比较,选出最大的值

三源代码

复制代码
 1 #include<iostream.h>
 2 int main()
 3 {
 4 int a[3];
 5 for(int i=0;i<3;i++)
 6 {
 7 cin>>a[i]; 
 8 }      //输入
 9 
10 int max1,max2,max3;  //单数比较
11 max1=a[0];
12 for(i=0;i<3;i++)
13 {
14     if(a[i]<max1){}
15     else
16     {
17         max1=a[i];
18     }
19 }
20 max2=a[0]+a[1];
21 for(i=0;i<2;i++)
22 {
23     if( max2>a[i]+a[i+1]){}
24     else
25     {
26         max2=a[i]+a[i+1];
27 
28     }
29 }
30 int sum=0;
31 for(i=0;i<3;i++)
32 {
33    sum=sum+a[i];
34    max3=sum;
35 }
36 int t;
37 if(max1>max2)
38 {
39     if(max1>max3)
40     {
41         cout<<max1<<endl;
42     }
43     else
44     {
45         cout<<max3<<endl;
46     }
47 
48 }
49 else
50 {
51     if(max2>max3)
52     {
53         cout<<max2<<endl;
54     }
55     else
56     {
57         cout<<max3<<endl;
58     }
59 }
60 
61 
62 }
复制代码

四、运行结果

五 实验总结

此次实验主要目的是锻炼我们结对编程的能力,虽说此次代码很容易,但是也出现了不少的问题。

第一,关于手脑协调的问题,写代码的一方,比如我,脑袋光顾着打代码了也没往下深入的思考,然后小伙伴就把

以下的解题思路想出来了,让我一直忙着敲,思路可能有点不适应,手和脑不太协调,使得编写代码过程中代码错误小,

但是思维有些停滞,以后还需加强练习。

第二,关于交流的问题,两人可能思路有快有慢,有前有后,就难免会发生意见的分歧,这时,我们俩都做的认真听取对方的

想法和建议,从而更快的解决问题,达到了双赢。

第三,关于效率的问题,我是个比较懒得人,有了小伙伴的督促我更加早的完成了这个问题,没有拖到最后,我觉得两个人一起挺好,互相监督

同甘共苦,荣辱与共很棒。

u

 

posted on 2015-03-18 13:28  掬雪煮茶  阅读(311)  评论(1编辑  收藏  举报