标签:
要求:
输入一个整形数组,数组里有正数也有负数。
数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。
求所有子数组的和的最大值。要求时间复杂度为O(n)。
设计思路:
本次实验设计,把数组长度定在了5,然后定义一个长度为15的数组,依次存入数组子序列的和,然后用for循环比较出最大的一个,题目就得到了解决。由于课堂编程,并未考虑数组成员特别多的话如何实现。
源代码如下:
1 #include<iostream.h> 2 int main() 3 { 4 int i,a[5],b[15]; 5 for(i=0;i<5;i++) 6 { 7 cin>>a[i]; 8 } 9 for(i=0;i<5;i++) 10 b[i]=a[i]; 11 for(i=0;i<4;i++) 12 { 13 b[5+i]=a[i]+a[i+1]; 14 } 15 for(i=0;i<3;i++) 16 { 17 b[9+i]=a[i]+a[i+1]+a[i+2]; 18 } 19 for(i=0;i<2;i++) 20 { 21 b[12+i]=a[i]+a[i+1]+a[i+2]+a[i+3]; 22 } 23 b[14]=a[0]+a[1]+a[2]+a[3]+a[4]; 24 25 int max=b[0]; 26 for(i=1;i<15;i++) 27 { 28 if(b[i]>max) 29 max=b[i]; 30 } 31 cout<<max<<endl; 32 33 return 0; 34 }
运行结果如下:
结队开发实验感想:
有一个给力的队友是多么重要啊,当我毫无头绪的时候,是队友给了我继续下去的动力,是队友赋予了代码灵魂。
在本次实验中,我理解错了子数组的含义,是队友把我引导,使我走向了正确的解决问题的方向。
这就跟《梦断代码》中的大神们开发程序是一样的,把各自的思想融合在一起,从而达到最理想的效果。
当然了,这是在短时间内想出来的解题思路,还需要不断的进行代码优化,比如数组成员太多了怎么办等等。
标签:
原文地址:http://www.cnblogs.com/duang/p/4346054.html