zoukankan      html  css  js  c++  java
  • 求一个二维数组所有子数组和的最大值(郭少周,陈泽)

    小组成员:陈泽 郭少周

    设计流程:

    设计要求.1输入一个二维整形数组,数组里有正数也有负数。

                        2.二维数组中连续的一个子矩阵组成一个子数组,每个子数组都有一个和。

                        3.求所有子数组的和的最大值。要求时间复杂度为O(n)。

    程序设计:定义两个数组w和z,先通过w数组算出最大数,再通过z数组算出最大子数组和。

    遇到问题:1.不明确二维数组如何定义。

                        2.不清楚二维数组最大子数组如何计算。

                        3.z数组的列数设计上出现问题。

    解决方案:1.查找网络资料学习二维数组c语言定义及其相关知识。

                        2.通过大神指点z数组列数应比w数组列数多一。

                        3.组员之间能冷静处理相关问题,互相提出建议弥补对方不足点。

    编码:

     #include <iostream.h>
    int main()
    {
        int w[4][5];//定义出4*5的二维数组
        int max;
        int s;
        int count;
        int z[4][6];
        cout<<"请写出你的二维数组(4*5)中的元素:"<<endl;
        for(int i=0;i<4;i++)
        {
            for(int j=0;j<5;j++)
            {
                cin>>w[i][j];
            }
        }
        for(i=0;i<4;i++)
        {
            count=0;
            for(int j=0;j<5;j++)
            {
                s=0;
                for(int l=0;l<5-j;l++)
                {
                    s=s+w[i][j+l];
                    z[i][count+l]=s;
                }
                count=count+5-j;
            }
        }
        //求出最大数
        max=z[0][0];
        for(int j=0;j<6;j++)
        {
            for(i=0;i<4;i++)
            {
                s=0;
                for(int r=0;r<4-i;r++)
                {
                    s=s+z[r+i][j];
                    if(max<s)
                    {
                        max=s;
                    }
                }
            }
        }
        cout<<"该二维数组的最大子数组和为:"<<max<<endl;
        cout<<endl;
        return 0;
    运行结果:  1.输入的数组为:(4*5)
                                                      5 7 -4 3 6
                                                      2 -5 -6 9 1
                                                      3 7 5 4 -7
                                                      1 3 5 -5 6
                          2.计算结果:该二维数组的最大子数组为40
                           3.计算结果截图:
     

    心得:团结就是力量,仔细斟酌王老师ppt中人与人沟通的方法,提建议的方法,对自己帮助很大,使得组员之间工作事半功倍,矛盾轻松化解。另外编程方面还是一如既往地渣,有很大的不足还需努力。                             

               

  • 相关阅读:
    【LeetCode-动态规划】编辑代价
    【C++】使用istringstream分割字符串
    【LeetCode-字符串】简化路径
    【LeetCode-字符串】简化路径
    【LeetCode-并查集】朋友圈
    【LeetCode-背包】目标和
    【LeetCode-动态规划】分割等和子集
    The code of method _jspService(HttpServletRequest, HttpServletResponse) is exceeding the 65535 bytes
    【错误解决】本地计算机上的mysql服务启动停止后,某些服务在未由其他服务或程序使用时将自动停止
    MySQL解压版安装配置详解
  • 原文地址:https://www.cnblogs.com/czlyl999/p/9825970.html
Copyright © 2011-2022 走看看