一、题目
返回一个整数数组中最大子数组的和
要求:
输入一个整形数组,数组里有正数有负数
数组中连续的一个或多个整数组组成一个子数组,每个子数组都有一个和
求所有子数组的和的最大值
二、解题思路
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