Java实验(5) 最大子方阵
来源:互联网 发布:excelplus电子表格mac 编辑:程序博客网 时间:2024/05/17 04:44
给定一个由0,1组成的n*n方阵(n在运行时提醒用户输入),判断其中由全1组成的最大子方阵的左上角位置和阶数。例如用户输入n为5,随机产生的方阵如下:
程序的输出为:最大子方阵位于(2,2),阶数3。
要求编写方法实现上述功能,返回值是一个包含3个元素的数组,依次表示行下标,列下标,阶数。
方法原型:public static int[] findLargestBlock(int[][] m)
package maxsubmatrix;import java.util.Scanner;public class MaxSubMatrix { public static void main(String[] args) { Scanner input=new Scanner(System.in); System.out.println("请输入方阵维数n:"); int n=input.nextInt(); int [][] m=new int[n][n]; int []a=new int[3]; //产生一个n*n矩阵,元素为0或1并输出 for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ m[i][j]=(int)(Math.random()*10)%2; System.out.print(m[i][j]+"\t"); } System.out.print("\n"); } a=findLargestBlock(m); System.out.print("\n"); System.out.println("最大子方阵位于:("+a[0]+","+a[1]+")"); System.out.println("阶数:"+a[2]); } //找到最大的全为1的矩阵块 public static int[] findLargestBlock(int [][] m){ boolean t=true; int []a=new int[3]; int n=m.length; int i=0,j=0,l=0; for(l=n;l>=1;l--){ //矩阵维数,从最大开始 for(i=0;i<=n-l;i++){ for(j=0;j<=n-l;j++){ t=true; for(int x=i;x<i+l;x++){ for(int y=j;y<j+l;y++){ if(m[x][y]!=1){ //不为1退出此轮循环 t=false; break; } } if(t==false) break; } if(t==true) break; } if(t==true) break; } if(t==true) break; } a[0]=i; a[1]=j; a[2]=l; return a; } }
0 0
- Java实验(5) 最大子方阵
- 最大子方阵
- [编程题]最大子方阵
- FAFU-1043 最大和谐子方阵 DP
- 四条边为黑色元素的最大子方阵
- 程序员面试金典——最大子方阵问题:找到四条边颜色相同的最大子方阵
- java 方阵
- 找最大方阵
- 方阵中的最大乘积
- 最大子阵.java
- 最大子数组java实现
- 最大子数组 java语言
- 最大子数组+Java 基础知识
- java求最大子序列
- 最大子序列(java)
- 旋转方阵java编写
- java螺旋方阵实现
- Java-螺旋方阵
- SQLite添加新的字段
- 高效计算基础与线性分类器
- epoll
- PHP实现导入excel表格的代码
- yii框架-yii2分页的使用与扩展(十五)
- Java实验(5) 最大子方阵
- require.js的用法
- Android 屏幕dp px换算
- android中的安装删除程序的流氓方法
- IOS系列-responseToSelector
- Java Socket简单例子、readLine()、readUTF()
- Linux PATH 设置
- 机器学习模型性能测试结果(R或者python),逻辑回归的测试结果没有添加
- leetcode_c++:Game of Life(289)