題目描述
輸入兩個正整數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);
}
}
}