题目描述
输入两个正整数M和N作为二维矩阵的行和列,之后将该二维数组用输入的M*N个0或1填充。
找出二维矩阵中只包含 1 的最大正方形,并输出其面积。
输入输出描述及示例
第一行的输入为二维矩阵的行数M与列数N。
接下来共有M行每一行有N个元素(0或1)代表二维矩阵的元素
输出为只包含1的最大正方形面积
示例:
输入:
4 5
1 1 1 0 0
0 1 1 0 1
1 0 1 1 1
0 0 0 1 1
输出:
4
Code
import java.util.*;
public class Main{
public static void main(String args[]){
Scanner sc=new Scanner(System.in);
int m,n;
m=sc.nextInt();
n=sc.nextInt();
int[][] a=new int[m][n];
Boolean flag = false;
for(int i=0;i<m;i++)
for(int j=0;j<n;j++){
a[i][j]=sc.nextInt();
if(a[i][j]!=0) flag = true;
}
if(flag){
int max=-1;
for(int i=1;i<m;i++)
for(int j=1;j<n;j++){
if(a[i][j]==1){
int min=a[i-1][j-1];
if(a[i-1][j]<min)
min=a[i-1][j];
if(a[i][j-1]<min)
min=a[i][j-1];
a[i][j] += min;
if(max<a[i][j])
max=a[i][j];
}
}
System.out.println(max*max);
}else{
System.out.println(0);
}
}
}