zoukankan      html  css  js  c++  java
  • 二维数组

    求二维数组的子数组和的最大值,首先创建一个二维数组,考虑到输入数值是的简便,我自定义二维函数的行和列,用随机函数随机产生一个二维数组。首先第一二层循环求出第一行数组所有从第一个值开始的子数组的和,如果和为负数,则令和等于零再加下一个数,以此方法求出最大值;在外层循环中有参数n使数组前n行数组再求出所有从第一列开始的子数组的和,如果和为负数,则令和等于零再加下一个数,以此方法求出最大值。然后第三层循环求出后边所有行数组所有从第一个值开始的和的最大值。第四层循环是从第一行开始求出所有行的子数组和的最大值。代码如下:

    package 数组4;
    
    import java.util.Random;
    import java.util.Scanner;
    
    public class shuzu4 {
    
        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;
            for(n=0;n<l;n++)
            {
                sum=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("");            
        }
    }
  • 相关阅读:
    Leetcode-113 Path Sum II(路径总和 II)
    Leetcode-946 验证栈序列(Validate Stack Sequences)
    Leetcode-945 Minimum Increment to Make Array Unique(使数组唯一的最小增量)
    UVa-10129 Play on Words
    UVa-10305 Ordering Tasks
    UVa-816 Abbott's Revenge
    UVa-1103 Ancient Messages
    种子填充(flood fill)
    内存池
    Leetcode-942 DI String Match(增减字符串匹配)
  • 原文地址:https://www.cnblogs.com/yuanxiaochou/p/10590610.html
Copyright © 2011-2022 走看看