• 求二维数组中最大子数组的和


    一.题目:

    返回一个二维整数数组中最大子数组的和。 要求: 输入一个二维整形数组,数组里有正数也有负数。 二维数组中连续的一个子矩阵组成一个子数组,每个子数组都有一个和。 求所有子数组的和的最大值。要求时间复杂度为O(n)。

    二:结对编程要求:

    两人结对完成编程任务。 一人主要负责程序分析,代码编程。 一人负责代码复审和代码测试计划。 发表一篇博客文章讲述两人合作中的过程、体会以及如何解决冲突(附结对开发的工作照)。

    三:设计思路:

    将二维数组的每行轮番逐次相加(包括单行)后看成一维数组,利用求一维数组最大字数组的方法,求出最大字数组。

    #include<iostream>

    #include <cstdlib>

    #include <ctime>

    using namespace std;

    #define M 4

    #define N 4

     

    void main()

    {

         int m=4,n=4,a[100][100],i,j,b,c,z;

         cout<<"请输入数值范围:"<<endl;

         cin>>b>>c;

         cout<<"生成二维数组为:"<<endl;

         srand(unsigned(time(0)));

         for(i=0;i<M;i++)

         {

             for(j=0;j<N;j++)

             {

                  a[i][j]=rand()%(c-b+1)+b;

                  cout<<a[i][j]<<" ";

             }

             cout<<endl;

         }

         int sum,s[100],k=0,o=-1000,p=-1000,q=-1000;

         for(j=0;j<N;j++)

         {

             s[j]=0;

         }

         for(int ii=0;ii<M;ii++)

         {

             while(k+ii<M)

             {

                  for(j=0;j<N;j++)

                  {

                       s[j]=s[j]+a[k+ii][j];

                  }

                  for (i=0;i<N;i++)

                  {

                       for (j=i;j<N;j++)

                       {

                           sum=0;

                           for (z=i;z<=j;z++)

                           {

                                sum=sum+s[z];

                           }

                           if (sum>o) o=sum;

                       }

                       if (o>p)

                       {

                           p=o;

                       }

                  }

                  k++;

             }

             if (p>q)

             {

                  q=p;

             }

             k=0;

             for(j=0;j<N;j++)

             {

                  s[j]=0;

             }

         }

         cout<<"子矩阵最大值为"<<q<<endl;

    }

    总结:题目的难点是思考设计思路,后来和同宿舍成员讨论后,将问题解决了,另外代码的实现也稍有难度,不过已经有一定感觉了,专注,用心,希望越来越好。

  • 相关阅读:
    java源码--Map
    数据结构 -- 哈希表(hash table)
    第三篇:SpringBoot模板Freemaker使用
    第四篇:SpringBoot 数据持久化之JdbcTemplate
    数据结构 -- 红黑树
    第二篇:彻底搞清楚 Spring Boot 的配置文件 properties和yml
    数据结构 -- AVL树
    Spring Boot之从Spring Framework装配掌握SpringBoot自动装配
    数据结构 -- Trie字典树
    数据结构 -- 并查集
  • 原文地址:https://www.cnblogs.com/LJT666/p/4412976.html
Copyright © 2020-2023  润新知