zoukankan      html  css  js  c++  java
  • 求二维数组的最大子数组

    一、题目:

         n返回一个二维整数数组中最大子数组的和。
    二、要求:
        n输入一个二维整形数组,数组里有正数也有负数。
        n二维数组中连续的一个子矩阵组成一个子数组,每个子数组都有一个和。
        n求所有子数组的和的最大值。要求时间复杂度为O(n)。 
    三、程序源码:
    import java.util.Random;
    import java.util.Scanner;
    
    public class dd {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
                    System.out.println("请输入数组的行数和列数:");
                    Scanner sc=new Scanner(System.in);
                    int n=sc.nextInt();
                    int m=sc.nextInt();
                    int a[][]=new int[n][m];
                    Random rand=new Random();
                    int Sum=0;
                    int N=0;
                    int i=0;
                    int e=0;
                    System.out.print("请输入数字范围:");
                    int m1=sc.nextInt();
                    int m2=sc.nextInt();
                    for(e=0;e<m;e++)
                    {
                        for(i=0;i<n;i++)
                        {
                            a[i][e]=(int) (m1+Math.random()*(m2-m1+1));
                            System.out.print(a[i][e]+"  ");
                        }
                        System.out.println();
                    }
                    int M=a[0][0];
                    for(e=0;e<m;e++)
                    {
                        int y=e;
                        do
                        {
                           for(i=0;i<n;i++)
                           {
                               for(int u=e;u>=y;u--)
                               {
                                   Sum=Sum+a[i][u];
                               }
                                N=N+Sum;
                                if(N>=M)
                                {
                                    M=N;
                                }
                                if(N<0)
                                {
                                    N=0;
                                }
                                Sum=0;
                           }
                           y--;
                           N=0;
                        }while(y>=0);
                    }
                    System.out.println("最大:"+M);
        }
          
    }

    四、程序运行截图:

    五、两人合作过程及体会以及解决冲突方法:

    合作过程:此次开发,有严雅芳进行程序分析和代码编程,我负责代码复审和代码测试计划。

    体会:合作开发中,交流最为重要,要写好程序,就要让同伴了解自己的程序设计思路,与同伴之间沟通好,由于自己理解力比较差,对于严雅芳的设计思路好久才理清,以后要多多注意了。

    解决冲突的方法:当发生冲突时,先让双方互换意见及思路,再不能说服对方的情况下,停止编程,让各自冷静下来,仔细想想,过一段时间再继续。

    六、结对开发照:

  • 相关阅读:
    Git 分支管理
    Git 保存工作区
    Git 版本控制
    Git 基本命令-详细版本
    Git 初始化配置
    Git 基本概念:分区
    JavaScript 调试
    JavaScript 错误
    JS 判断字符串是否全部为字母
    JS 判断输入字符串是否为数字、字母、下划线组成
  • 原文地址:https://www.cnblogs.com/fengyutongxing/p/4403259.html
Copyright © 2011-2022 走看看