zoukankan      html  css  js  c++  java
  • 结对开发二——求矩阵子矩阵和的最大

    .开发思路

        先设计一个34列的矩阵。

        然后将12行的每一列相加作为第4行。

        23行的每一列相加作为第5行。

        123行的每一列作为第六行。

        然后列出每一行的子数组求出最大值。

        最后比较每一行的最大值的大小,求出最终结果。

    .开发代码

    #include<iostream.h>
    int main()
    {
    int x,y,n,m;
    int s[10][20];
    // int a[10][20];
    int sum[10][20];
    cout<<"请输入34列的矩阵:"<<endl; 
    int a[][4]={10,-6,-1,3,-7,20,3,7,-2,4,2,-19} ;
    for(x=0;x<3;x++)
    {
    for(y=0;y<4;y++)
    {
    cout<<a[x][y]<<" ";
    }
    cout<<endl;
    }

    //---------------------------以上是数组的输入

    for(y=0;y<4;y++)
    {
    for(x=0;x<3;x++)
    {
    s[x][y]=a[x][y];
    }
    }


    for(x=0;x<2;x++)
    {
    for(y=0;y<4;y++)
    {
    s[x+3][y]=a[x][y]+a[x+1][y];
    }
    }

    for(y=0;y<4;y++)
    {
    s[5][y]=a[0][y]+a[1][y]+a[2][y];
    }


    //---------------------------------------------------


    for(x=0;x<6;x++)
    {
    for(y=0;y<4;y++)
    {
    sum[x][y]=s[x][y];
    }
    for(y=0;y<3;y++)
    {
    sum[x][y+4]=s[x][y]+s[x][y+1];
    }
    for(y=0;y<2;y++)
    {
    sum[x][y+7]=s[x][y]+s[x][y+1]+s[x][y+2];
    }
    for(y=0;y<1;y++)
    {
    sum[x][y+9]=s[x][y]+s[x][y+1]+s[x][y+2]+s[x][y+3];
    }
    }

    //-------------------------------------------------------------------------
    /*
    for(x=0;x<6;x++)
    {
    for(y=0;y<10;y++)
    {


    if(sum[x][y]==30)
    cout<<x<<endl<<y<<endl;
    }

    }
    */
    //----------------------------- 
    int max=sum[0][0];

    for(x=0;x<6;x++)
    {
    for(y=0;y<10;y++)
    {
    if(sum[x][y]>max)
    {
    max=sum[x][y];
    n=x;
    m=y;

    }
    }

    }
    //--------------------------------------求最大数


    if(n<3)
    {
    cout<<"数组开始行:"<<n+1<<endl<<"数组结束行:"<<n+1<<endl;
    }
    else
    {
    n=n%3;
    switch(0)
    {
    case 0:cout<<"数组开始行:"<<n<<endl<<"数组结束行:"<<n+1<<endl;break;
    case 1:cout<<"数组开始行:"<<n<<endl<<"数组结束行:"<<n+1<<endl;break;
    case 2:cout<<"数组开始行:"<<n<<endl<<"数组结束行:"<<n+2<<endl;break;

    }
    }

    //-----------------------------------------------------------------------------求子数组开始的行
    if(m<4)
    {
    cout<<"数组开始列:"<<m<<endl<<"数组开始列:"<<m<<endl;
    }
    else if(m>3&&m<8)
    {
    {
    m=m%4;
    switch(m)
    {
    case 0:cout<<"数组开始列:1"<<endl<<"数组结束列:2"<<endl;break;
    case 1:cout<<"数组开始列:2"<<endl<<"数组结束列:3"<<endl;break;
    case 2:cout<<"数组开始列:3"<<endl<<"数组结束列:4"<<endl;break;
    case 3:cout<<"数组开始列:1"<<endl<<"数组结束列:3"<<endl;break;



    }
    }
    }
    else if(m>7)
    {
    m=m%8;
    switch(m)
    {
    case 0:cout<<"数组的开始行:2"<<endl<<"数组的结束列:4"<<endl;break;

    case 1:cout<<"数组的开始行:1"<<endl<<"数组的结束列:4"<<endl;break;
    }
    }


    cout<<"最大的子数组和为:max="<<max<<endl;

    return 0;

    }

    .开发结果截图

     

    四、结对的总结

        发现这个程序的思路是非常简单的便想出来了,但是在编写成旭过程中最麻烦的就是各中计算几次循环从第几进行循环,然而又一个伙伴,既可以轻松的度过这个问题。

    而且在开发的最后阶段,伙伴给我了好多建议比如输出最大子矩阵,虽然是让我更加麻烦的进行对程序的修改,但是让程序更加完善化和实用性。在结对的过程中需要彼此的默契和理解,还要有与人沟通的能力,在编写的过程中差点因为一点点的小毛病而无法进行,我认为我们仍需改进。

  • 相关阅读:
    msmms (二) sms与mms 简述!
    msmms (一) sms与mms区别
    RTSP RTSP(Real Time Streaming Protocol),RFC2326,实时流传输协议,是TCP/IP协议体系中的一个应用层协议
    GPRS GPRS(General Packet Radio Service)是通用分组无线服务技术的简称,它是GSM移动电话用户可用的一种移动数据业务,属于第二代移动通信中的数据传输技术
    CrtCtl (客户端认证的证书、私钥)的控制
    ID
    Pb (数据存储单位)
    PDP 有多种定义,具体哪一种还需研究!!!!
    CNN 美国有线电视新闻网 wapCNN WAP 指无线应用通讯协议 ---- 美国有线电视新闻网 的无线应用
    CMWAP CMWAP是手机上网使用的接入点的名称
  • 原文地址:https://www.cnblogs.com/bmbcbyc/p/4356394.html
Copyright © 2011-2022 走看看