zoukankan      html  css  js  c++  java
  • 结对开发3

    题目:返回一个整数数组中最大子数组的和。

    要求:输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。

        数组中有1000个元素。

             结对编程要求:两人结对完成编程任务。一人主要负责程序分析,代码编程。一人负责代码复审和代码测试计划。

             发表一篇博客文章讲述两人合作中的过程、体会以及如何解决冲突(附结对开发的工作照)。

    一、设计思路

             首先,我们进行分工,由郭庆樑编写程序代码,由我负责代码复审和代码测试。

             解决思路是,我们先比较长度子数组中的最大值,存入一个数组,再比较这个数组中的各个值得大小,最终获得最大值。

             对于超过int32最大表示范围,我们的解决方案是只要数组中有足够多的负数,就不会产生如此大的值。

    二、源代码

    #include<iostream.h>
    #include<stdlib.h>
    int a[1000];
    int Sum(int num,int count)
    {
       int plus=0;
       int i=num;
       while(count!=0)
       {
          plus=plus+a[num];
          num++;
          count--;
       }
       return plus;
    }
    int main()
    {
       int i,j,k;
       int Max;
       int max[1000]={0};
       int Count=1000;
       for(i=0;i<1000;i++)
       {
          a[i]=10000-rand();
       }
       for(i=0;i<1000;i++)
       {
          cout<<a[i]<<' ';
          if((i+1)%5==0)
             cout<<endl;
       }
       for(i=0;i<1000;i++)
       {
          for(j=0;j<i+1;j++)
          {
             max[i]=max[i]+a[j];
          }
       }
       Max=max[0];
       for(i=0;i<1000;i++)
       {
          for(j=0;j<Count;j++)
          {
             if(max[i]<Sum(j,i+1))
              max[i]=Sum(j,i+1);
          }
          Count--;
       }
       for(i=1;i<1000;i++)
       {  
          if(Max<max[i])
           Max=max[i];
       }
       cout<<"最大值为:"<<Max<<endl;
       return 0;
    }

    四、结果截图

     五、总结

    经过前两次的合作,我们团队成熟了很多。这次实验工作量较大,我也参与了少部分的代码的编写工作,加快了进程

    六、工作照

  • 相关阅读:
    线程池学习笔记
    线性表的顺序存储和链式存储的实现(C)
    二叉树遍历算法——包含递归前、中、后序和层次,非递归前、中、后序和层次遍历共八种
    【Linux学习笔记】栈与函数调用惯例
    Linux网络编程简单示例
    Linux常用C函数-接口处理篇(网络通信函数)
    android的快速开发框架集合
    Android访问网络数据的几种方式Demo
    Linux C函数库大全
    Mysql 之配置文件my.cnf
  • 原文地址:https://www.cnblogs.com/lsfh/p/4368405.html
Copyright © 2011-2022 走看看