求二维数组的最大子数组

一、题目:

     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);
    }
      
}

四、程序运行截图:

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

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

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

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

六、结对开发照:

posted @ 2015-04-08 18:04  风雨同行  阅读(331)  评论(1编辑  收藏  举报