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

    题目:

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

    要求:

    输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。

    结对编程要求:两人结对完成编程任务。

    一人主要负责程序分析,代码编程。

    一人负责代码复审和代码测试计划。

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

    程序要使用的数组放在一个叫 input.txt 的文件中,  文件格式是:
    数组的行数,
    数组的列数,
    每一行的元素,  (用逗号分开)
    每一个数字都是有符号32位整数, 当然, 行数和列数都是正整数。
    一、设计思路

             首先,我们进行明确的分工,由我负责程序分析,代码编程,张科同学负责代码复审和代码测试。然后,程序解决思路是,先比较数组中单个元素的最大值,之后,再比较行相邻两个数相加的最大值,再比较列相邻两个数相加的最大值,即以第一行,第一列元素为中心,逐渐向整个矩阵扩展。

            最后,比较各个情况最大值,得出最终结果,同时,用数组记录各情况下最大值的初始坐标,最后获得最大值的坐标,根据情况输出组成元素。

    二、源代码

    #include<stdio.h>
    int max[100]={0};//存储最大值
    int b[100]={1,1,1,1,1,1};//存储最大值的行坐标
    int c[100]={1,1,1,1,1,1};//存储最大值的列坐标
    int a[10][10];//存储文件中的数据
    int line;     //读取文件中的行
    int row;      //读取文件中的列
    void Compare()//进行比较
    {
       int i,j;
       int k=0;
       int Max;
       max[0]=a[0][0];
       for(i=1;i<line;i++)
       {
          for(j=0;j<row;j++)
          {
             if(max[0]<a[i][j])
             {
                max[0]=a[i][j];
                b[0]=i+1;
                c[0]=j+1;
             }
          }
       }
       max[1]=a[0][0]+a[0][1];
       for(i=0;i<line;i++)
       {
          for(j=0;j+1<row;j++)
          {
             if(max[1]<(a[i][j]+a[i][j+1]))
             {
                max[1]=a[i][j]+a[i][j+1];
                b[1]=i+1;
                c[1]=j+1;
             }
          }
       }
       max[2]=a[0][0]+a[1][0];
       for(j=0;j<row;j++)
       {
          for(i=0;i+1<line;i++)
          {
             if(max[2]<(a[i][j]+a[i+1][j]))
             {
                max[2]=a[i][j]+a[i+1][j];
                b[2]=i+1;
                c[2]=j+1;
             }
          }
       }
       max[3]=a[0][0]+a[0][1]+a[0][2];
       for(i=0;i<line;i++)
       {
          for(j=0;j+2<row;j++)
          {
             if(max[3]<(a[i][j]+a[i][j+1]+a[i][j+2]))
             {
                max[3]=a[i][j]+a[i][j+1]+a[i][j+2];
                b[3]=i+1;
                c[3]=j+1;
             }
          }
       }
       max[4]=a[0][0]+a[0][1]+a[1][0]+a[1][1];
       for(i=0;i+1<line;i++)
       {
          for(j=0;j+1<row;j++)
          {
             if(max[4]<(a[i][j]+a[i][j+1]+a[i+1][j]+a[i+1][j+1]))
             {
                   max[4]=a[i][j]+a[i][j+1]+a[i+1][j]+a[i+1][j+1];
                b[4]=i+1;
                c[4]=i+1;
             }  
          }
       }
       for(i=0;i<line;i++)
       {
          for(j=0;j<row;j++)
          {
             max[5]=max[5]+a[i][j];
          }
       }
       b[5]=1;
       c[5]=1;
       Max=max[0];
       for(i=1;i<6;i++)
       {
          if(Max<max[i])
          {
             Max=max[i];
             k=i;
          }
       }
       printf("最大值为:%d ",Max);
       printf("最大值起始位置为%d行,%d列 ",b[k],c[k]);
       switch(k)
       {  
       case 0:printf("最大值由1个元素组成 ");break;
       case 1:printf("最大值由2个同行元素组成 ");break;
       case 2:printf("最大值由2个同列元素组成 ");break;
       case 3:printf("最大值由3个同行元素组成 ");break;
       case 4:printf("最大值由2行2列元素组成 ");break;
       case 5:printf("最大值由全体元素组成 ");break;
       default:break;
       }
    }
    int main()
    {
       int i,j;
       FILE *fp;
       fp=fopen("input.txt","r");
       if(fp==NULL)
       {
          printf("File open failed! ");
          return 0;
       }
       fscanf(fp,"%d",&line);
       fscanf(fp,"%d",&row);
       for(i=0;i<line;i++)
       {
          for(j=0;j<row;j++)
          {
             fscanf(fp,"%d",&a[i][j]);
          }
       }
       printf("数组元素为: ");
       for(i=0;i<line;i++)
       {
          for(j=0;j<row;j++)
          {
             printf("%d    ",a[i][j]);
          }
          printf(" ");
       }
       fclose(fp);
       Compare();
       return 0;
    }

    三、运行结果

    四、结对开发体会

            结对开发能减少寻找代码错误的时间,使我们能够有更多的时间来优化代码的功能。

    五、工作照

  • 相关阅读:
    转载: JS 中 new 操作符
    转载: js的值,对象,原型
    php setcookie(name, value, expires, path, domain, secure) 参数详解
    转载:js数组对象操作
    转载: js数组与 json 的区别
    转载: js的Prototype属性 解释及常用方法
    行人检测程序对接景区测试人数比对数据库切换时间不准确排查
    TSINGSEE青犀视频行人检测集成票务系统读取票务系统数据库为空的问题
    EasyWasmPlayer播放视频报错Uncaught (in promise)DOMException
    名胜景区部署TSINGSEE青犀视频监控具备哪些现实意义?
  • 原文地址:https://www.cnblogs.com/benboerba/p/4357038.html
Copyright © 2011-2022 走看看