关于求整数数组最大子数组和的设计文档

                                                                                                         ——杨波 崔海营

      当看到问题时,我们首先选用了一个小例子进行分析,我们假设数组为1 ,2, 3, 4, 5,要求得所有子数组的个数为{[n*(n-1)]/2}+n,所以可算出该例子中所有子数组的个数是15。进而我们就讨论如何编码能够得到所有的子数组的和,然后再通过比较求得最大的子数组之和,进而得到最终结果。整个讨论过程如下图所示:

 

经过讨论后我们的到了如下的代码:

#include<iostream>
using namespace std;
int main()
{
    int    num[5];
    int sum[15];
    int k=0;
    int temp;
    int max;
    for (int i=0;i<5;i++)
    {
      cin>>num[i];
    }  
    for( i=0;i<5;i++)
   {
       temp=num[i];
       sum[k]=temp;
       k++;
       for(int j=i+1;j<5;j++)
       {
            
           temp=temp+num[j];
           sum[k]=temp;
           k++;
       }
   }
   max=sum[0];
   for(int j=0;j<15;j++)
   {
       if(max<sum[j])
       {
           max=sum[j];
       }
   }
   cout<<"最大子数组和"<<max<<endl;
   return 0;
} 

并且经过测试可以得到正确的结果:
测试:5  -1  8  -5  9

可得到结果:最大子数组的和为16

     在代码的编译测试阶段所遇到的问题:

      1).头文件书写错误,可能是太粗心了;

      2).变量j没有定义,编写时细心程度不够。

 

           

posted on 2014-03-10 17:36  海鹰二号  阅读(231)  评论(1编辑  收藏  举报