zoukankan      html  css  js  c++  java
  • 结对开发 随机产生二维数组并求最大子数组的和

    一、题目

     随机产生二维数组并求最大子数组的和 

    二、设计思想

    先纵向遍历该二维数组,将该二维数组变成一个个的一维数组,在调用上次的程序函数,得出每一个和都存入另一个数组中,最后调用比较函数,找到最大子数组的和。

    三、源代码

    #include<iostream.h>
    int Largest(int list[],int length)
    {
        int i,max=list[0];
        for(i=0;i<(length);i++)
        {
            if(list[i]>max)
            {
                max=list[i];
            }
        }
        return max;
    }
    int paixv(int list[])
    {
    
        int sum=0;
        int max=list[0];
    
        for(int i=0;i<3;i++)
            {
                 if(sum<=0)
                 {
                     sum=list[i];
    
                 }
                 else
                 {
                     sum=sum+list[i];
    
                 }
                 if(sum>max)
                 {
                     max=sum;
                 }
            }
            return max;
    }
    int main()
    {
        int h=0;
        int a[3][3];
        int b[100];
        int c[100];
        int d[100];
        int e[100];
        cout<<"please input 9 numbers:";
        do
        {
            for(int l=0;l<3;l++)
            {
                cin>>a[h][l];
            }
            h++;
        }
        while(h<3);
        b[0]=a[0][0]+a[1][0];
        c[0]=a[0][0]+a[1][0]+a[2][0];
        d[0]=a[1][0]+a[2][0];
        b[1]=a[0][1]+a[1][1];
        c[1]=a[0][1]+a[1][1]+a[2][1];
        d[1]=a[1][1]+a[2][1];
        b[2]=a[0][2]+a[1][2];
        c[2]=a[0][2]+a[1][2]+a[2][2];
        d[2]=a[1][2]+a[2][2];
        e[0]=paixv(b);
        e[1]=paixv(c);
        e[2]=paixv(d);
        int sum=0;
        int max=a[0][0];
        for(int i=0;i<3;i++)
            {
                 if(sum<=0)
                 {
                     sum=a[0][i];
    
                 }
                 else
                 {
                     sum=sum+a[0][i];
    
                 }
                 if(sum>max)
                 {
                     max=sum;
                 }
            }
            e[3]=max;
            int sum1=0;
            int max1=a[1][0];
            for(int i=0;i<3;i++)
            {
                 if(sum1<=0)
                 {
                     sum1=a[1][i];
    
                 }
                 else
                 {
                     sum1=sum1+a[1][i];
    
                 }
                 if(sum1>max1)
                 {
                     max1=sum1;
                 }
            }
            e[4]=max1;
            int sum2=0;
            int max2=a[2][0];
            for(int i=0;i<3;i++)
            {
                 if(sum2<=0)
                 {
                     sum2=a[2][i];
    
                 }
                 else
                 {
                     sum2=sum2+a[2][i];
    
                 }
                 if(sum2>max2)
                 {
                     max2=sum2;
                 }
            }
            e[5]=max2;
            int max3=Largest(e,6);
            cout<<"最大矩阵的和为:"<<max3;
    
    
    }
    四、结果截图

    五、实验总结
    上课老师和同学提供了一个很好的设计思想,所以这次编程相对简单。
    我俩利用上次横向遍历数组的经验先纵向遍历数组,在调用上次的函数即完成了要求。
    但矩阵较小,以后一定改正。
    我的队友石鹤想出了这个题目的设计思想,我编写了程序,我们俩一起进行了测试,希望我俩以后继续进步。
    六、相片


  • 相关阅读:
    vue proxy代理理解
    css样式鲜为人知的属性
    vue中实现元素选中互斥
    站长统计加载慢解决方法
    微信图片预览接口
    移动端兼容问题
    请求头和响应头
    清除缓存方法
    屏幕适配及rem
    清除多个定时器
  • 原文地址:https://www.cnblogs.com/weaponx/p/4357196.html
Copyright © 2011-2022 走看看