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("");            
        }
    }
  • 相关阅读:
    FJNU 1151 Fat Brother And Geometry(胖哥与几何)
    FJNU 1157 Fat Brother’s ruozhi magic(胖哥的弱智术)
    FJNU 1159 Fat Brother’s new way(胖哥的新姿势)
    HDU 3549 Flow Problem(最大流)
    HDU 1005 Number Sequence(数列)
    Tickets(基础DP)
    免费馅饼(基础DP)
    Super Jumping! Jumping! Jumping!(基础DP)
    Ignatius and the Princess IV(基础DP)
    Keywords Search(AC自动机)
  • 原文地址:https://www.cnblogs.com/yuanxiaochou/p/10590610.html
Copyright © 2011-2022 走看看