zoukankan      html  css  js  c++  java
  • 个人作业1—续3

    题目要求:求二维数组的的子矩阵的最大的和

    设计思路:若分别求出每行的最大子数组,再逐行相加的求,考虑到行与行的子数组间未必有交集,所以不知道去怎么处理,于是只好想到了穷举法,即从原二维数组的每个元素逐一开始求出每个                    子矩阵的和,找出最大值。这个方法就是有些麻烦,程序中用到了六个for循环。

    import java.util.*;
    
    public class shuzu4 {
        public static int max(int a[][],int row,int col) {
            int sum=0,t=a[0][0];
            for(int i=0; i<row;i++) {
                for(int j=0;j<col;j++) {//两个外层for循环遍历数组元素
                    for(int p=i;p<row;p++) {
                        for(int l=j;l<col;l++){//两个中层for循环控制子矩阵边界
                            for(int m=i;m<=p;m++) {
                                for(int n=j;n<=l;n++) {//两个内层for循环用来求子矩阵元素和
                                    sum+=a[m][n];
                                }
                            }
                            if(sum>t) //每进行完一个子矩阵的运算,都和t值比较,找出最大sum值
                                t=sum;
                            sum=0;
                        }
                    }
                }
            }
            return t;
        }
    public static void main(String []args) {
        Scanner input=new Scanner(System.in);
        System.out.println("请输入二维数组的行数和列数:");
        int row=input.nextInt();
        int col=input.nextInt();
        int [][]a=new int[row][col];
        System.out.println("请输入数组:");
        for(int i=0;i<row;i++) {
            for(int j=0;j<col;j++)
            {
                a[i][j]=input.nextInt();
            }
        }
        System.out.print("子矩阵的最大的和为:");
        System.out.println(max(a,row,col));
     }
    
    }
  • 相关阅读:
    北京南天软件工资条解决方案
    MongoDB的增删查改基本操作
    MongoDB的基本概念
    MAC上mongodb连接不上
    Windows和Mac上NodeJS和Express的安装
    jquery筛选数组之grep、each、inArray、map的用法及遍历son对象(转)
    JavaScript中Function的拓展
    苹果电脑的快捷键介绍
    Emmet:HTML/CSS代码快速编写神器
    logstash实战tcp插件
  • 原文地址:https://www.cnblogs.com/zwang/p/10590137.html
Copyright © 2011-2022 走看看