课堂作业-3

这次课堂作业是二维数组,随机生成一个二维数组,然后求出整个二维数组中子数组和的最大值。之前的几节课都是接触的以为数组,突然接触二维数组,然后不知道该如何下手。找身边写出来的同学问了一下。其实除了一维和二维不一样,其他的都是一样的。代码如下。

package 数组;

import java.util.Random;
import java.util.Scanner;

public class shuzu{

    public static void main(String[] args) {
        int a[][];
        int i,j,l,h,n,k,sum,max;
        //随机产生一个数组
        Scanner scanner = new Scanner(System.in);
        System.out.print("输出随机产生的数组的长度:");//设置数组的长
        h=scanner.nextInt();
        System.out.print("输出随机产生的数组的高度:");//设置数组的高
        l=scanner.nextInt();
        scanner.close();
        a=new int[l][h];//将设置的长和宽赋给这个数组
        for(i=0;i<l;i++)
        {
            for(j=0;j<h;j++)
            {
                Random random = new Random();
                a[i][j]=random.nextInt(11);//随机生成一个数赋给整个二维数组中的相对位置的值
                a[i][j]=a[i][j]-1;
                System.out.print(a[i][j]);
                System.out.print(" ");//每个数字之间设置间距
            }
            System.out.println("");
        }
        max=0;//先设置最大值为0
        for(n=0;n<l;n++)
        {
            sum=0;//先设置最大值为0
            for(i=0;i<l-n;i++)
            {
                sum=0;
                for(j=0;j<h;j++)
                {
                    for(k=i;k<=i+n;k++)
                    {
                        sum=sum+a[k][j];
                    }
                    /*System.out.print(sum);
                    System.out.print(" ");*/
                    if(sum<0)
                    {
                        sum=0;
                    }
                    if(max<sum)
                    {
                        max=sum;
                    }
                }
            }
        }
        System.out.print(max);
        System.out.println("");            
    }
}

运行结果如下:

在这个程序中,首先随机生成一个二维数组,然后设置生成的二维数组的长和宽。将设置的长和宽赋值给这个数组。随机生成数字,然后赋值给这个数组中相应的位置。在每个数字间设置间距。之后得出和最大的二维数组的方法和一维数组相似。

猜你喜欢

转载自www.cnblogs.com/zhaoxinhui/p/10587686.html