首页 > 其他 > 详细

结对开发二——求矩阵子矩阵和的最大

时间:2015-03-21 22:43:05      阅读:299      评论:0      收藏:0      [点我收藏+]

.开发思路

    先设计一个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]<<"\t";
}
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;

}

.开发结果截图

 技术分享

四、结对的总结

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

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

 

结对开发二——求矩阵子矩阵和的最大

原文:http://www.cnblogs.com/bmbcbyc/p/4356394.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!