《团队开发任务四之对二维环形数组的求解》

                                                                              《团队开发任务四之对二维环形数组的求解》

设计思想: 通过借鉴一维环形数组的思想与二维数组的实现,二者思想相融合即可。

源代码:

//求二维环形数组的最大子数组之和
//李敏,Apr 18th,2015
#include<iostream>
#include <time.h>
using namespace std;

void main()
{
    int m,n,a[100][100],k,t,c,i,j,z,b,d;
    int maxsum,sum[100],max=0;
    cout<<"请输入矩阵的行数和列数:"<<endl;
    cin>>m>>n;
    cout<<"输入数组范围,第一个数作为上限,第二个数作为下限:"<<endl;
    cin>>b>>d;
    srand( (unsigned)time( NULL ) );
    cout<<"产生的环形矩阵为:"<<endl;
    for(i=0;i<m;i++)
     {   
         for(j=0;j<2*n;j++)
         {
             a[i][j]=b+rand()%(d-b+1);
             if(j<n)
             {
                 cout<<a[i][j]<<'\t'<<'\t';
             }
             else
             {
                 a[i][j]=a[i][j-n];
                 cout<<a[i][j]<<'\t';
             }
            
         }
        cout<<endl;
     }
        for(k=0;k<m;k++)
        {
            //初始化一个m*n型的二维数组,以作为储备每一个细化的子矩阵之和
            for(c=0;c<n;c++)
            {sum[c]=0;}
            //求此矩阵划分而得的每一个子矩阵之和
            for(j=k;j<k+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<k+n;z++) { maxsum+=sum[z]; if(maxsum>max) max=maxsum; } } } } cout<<"最大子矩阵之和为:"<<max; }

 

实验结果截图:

 

编程总结:每一次结对开发都会有不同的收获,就这次实现二维环形数组而言,完全是站在前两次的基础上进行的,这就告诉我们无论哪次要进行开发,都得把这次的经验给积累下来,只有一步步的从小积累,积少成多,慢慢的才能养成开发项目的好习惯,才能很好的完成眼下的程序开发工作,当然,和队友的相互协作也是必不可少的,从这几次开发以来,我觉得我和我的队友已逐渐的慢慢走向和谐的步伐了,慢慢的形成了解决问题的思维方式,解决形式;总而言之,只要有共同的目标,坚不可摧的意志,积极向上的精神,善于总结,善于思考的行为模式,那么无论是遇到了多大的困难,一定是能够战胜的!

团队合作人:李敏   刘子晗

工作照:

 

posted @ 2015-04-22 15:29  Twinklelittlestar  阅读(253)  评论(1编辑  收藏  举报