设计思想:按列或按行的次序依次进行计算每个以列或行的次序为基准的每种情况下的每个子矩阵的和,然后再依次进行比较每个子矩阵的和,取出最大的一个即是最大字数组之和;
源代码:
//二维数组的最大子数组之和 //李敏,Apr 8th #include<iostream> #include<time.h> using namespace std; void main() { int m,n,a[100][100],k,t,c,i,j,z; int maxsum,sum[100],max=0; cout<<"请输入矩阵的行数和列数:"<<endl; cin>>m>>n; srand((unsigned)time(NULL)); for(i=0;i<m;i++) { for(j=0;j<n;j++) { a[i][j] = rand() %140 - 70; cout<<a[i][j]<< " "; } cout<<endl; } for(k=0;k<m;k++) { //初始化一个m*n型的二维数组,以作为储备每一个细化的子矩阵之和 for(c=0;c<n;c++) {sum[c]=0;} //求此矩阵划分而得的每一个子矩阵之和 for(j=k;j<n;j++) { for(i=0;i<m;i++) { sum[i]+=a[i][j]; } //依次比较所得到的每个子矩阵之和取最大子矩阵之和 for(t=0;t<m;t++) { maxsum=0; for(z=t;z<n;z++) { maxsum+=sum[z]; if(maxsum>max) max=maxsum; } } } } cout<<"最大子矩阵之和为:"<<max; }
实验截图:
合作过程及体会:这是我们合作的又一个程序了,我觉得我们已经慢慢的融入到这个过程中了,其中我们可以一起集思广益,可以互相取长补短,这比一个人写程序的速度快多了,这可以提高写程序的效率;当然冲突也是难免的,在我们遇到冲突的时候,我们都会冷静下来周密的考虑自己以及对方的思维或者先转移到别的事上,然后等觉得可以进行工作了,然后再以一致的目标继续进行我们的开发。
团队开发成员:李敏 刘子晗
工作照:
时间: 2024-10-10 02:36:43