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

    题目:返回一个二维整数数组中最大子数组的和。
    要求:
    输入一个二维整形数组,数组里有正数也有负数。
    二维数组首尾相接,象个一条首尾相接带子一样。
    数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。

    求所有子数组的和的最大值。要求时间复杂度为O(n)。

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

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

    一、设计思路

          这一次,我们为了彼此更好的锻炼,我和张科同学互换位置,由张科同学负责程序分析,代码编程,由我负责代码复审和代码测试计划。我们的思路是把原来的二维数组扩展,首尾拼接,假设原来二维数组的长度为宽和高分别为n和m,即扩展成为2n-1,2m-1,必须要添加限制条件,使其行和列数量相加不得超过原来的n和m。

    二、源代码

    #include<stdio.h>
    int rect[55][55];//二维数组行和列最大为55
    int w,l;         //w表示行,l表示列
    int longest(int a[])
    {
         int i,j,find=0,max;
       for(i=0;i<l;i++)
       {
          max=0;
          for(j=i;j<2*l-2&&(j-i)<l;j++)//将二维数组长度扩展为2n-2
          {
             max+=a[j%l];             //行列相加不超过原来的最大行列值
             if(max>find)
              find=max;            //find取得最大值
          }
         }
         return find;
    }
    int Rect(int a[55][55])
    {
         int i,j,k;
         int find=0;         //表示最终的最大值
         int b[55];
         int buf;
         for(i=0;i<w;i++)
       {
              for(j=0;j<l;j++)
                  b[j]=0;
              for(j=i;j<2*w-2&&(j-i)<w;j++)//将二维数组长度扩展为2n-2
          {
                  for(k=0; k<l; k++)
            {
                      b[k]+=a[j%w][k];     //行列相加不超过原来的最大行列值
                  }
                  buf=longest(b);
            if(find<buf)
              find=buf;
              }
         }
         return find;
    }
    int main()
    {
         int i,j;
         int result;
       printf("请输入二维数组的行和列: ");
         scanf("%d%d",&w,&l);
       printf("请输入二维数组: ");
       for(j=0;j<w;j++)
         for(i=0;i<l;i++)
           scanf("%d",&rect[j][i]);
       result=Rect(rect);
       printf("最大子数组的和为:%d ",result);
         return 0;
    }

    三、运行结果

    四、工作体会

         第一次负责代码复审,同时也是第一次坐在同学旁边,看同学编程,挑出他程序中的错误,给他的程序进行测试,让我收获颇多,有些错误,写程序的时候很难发现,但是看程序的时候就能看出来。

    五、工作照

  • 相关阅读:
    Eclispe造成的tomcat占用端口 无法启动 强制终止进程 转载
    JavaScript在页面中的执行顺序(理解声明式函数与赋值式函数) 转载
    spket IDE插件更新地址
    SQL 语句外键 a foreign key constraint fails
    面试技能树 转载
    简单粗暴 每个servlet之前都插入一段代码解决 乱码问题
    记录一个因sqlmap导致的错误
    Java与数据库数据类型对应表
    乐观锁与悲观锁
    maven打的包中含源文件jar包
  • 原文地址:https://www.cnblogs.com/benboerba/p/4393691.html
Copyright © 2011-2022 走看看