• 小组作业提交报告


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

                                                                                                             ——杨波 崔海营

          当看到问题时,我们首先选用了一个小例子进行分析,我们假设数组为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没有定义,编写时细心程度不够。

     

               

  • 相关阅读:
    CODEFORCES-CONTEST653-D. Delivery Bears
    CodeForces 1244C-exgcd?
    洛谷P3948
    L2-010 排座位 (25 分) (最短路)
    L2-008 最长对称子串 (25 分) (模拟)
    L2-007 家庭房产 (25 分) (并查集)
    L2-005 集合相似度 (25 分) (STL——set)
    L2-002 链表去重 (25 分) (模拟)
    L2-001 紧急救援 (25 分) (最短路+路径打印)
    hiho 1098 最小生成树二·Kruscal算法 (最小生成树)
  • 原文地址:https://www.cnblogs.com/chysly/p/3591607.html
Copyright © 2020-2023  润新知