题目描述:
给定一个无序矩阵,其中只有1和0两种值,求只含有1的最大正方形的大小。
例如给定如下矩阵:
1 0 1 0 0 1 0 1 1 1 1 1 1 1 1 1 0 0 1 0
public class maxRec { public static int get(int []arr){ int max = 0; for(int i=0;i<arr.length;i++){ int left = (i==0)?0:i-1; int right = (i==arr.length-1)?arr.length-1:i+1; while (left>=0&& arr[i]<=arr[left]) left--; while (right<arr.length && arr[i]<=arr[right]) right++; int sum=(right-left-1)*arr[i]; max=max>sum?max:sum; } return max; } public static int maxSize(int [][]arr){ int res[]=new int[arr[0].length]; int max=0; for(int i=0;i<arr.length;i++){ for(int j=0;j<arr[0].length;j++){ res[j]=(arr[i][j]==0) ? 0:(res[j]+1); } int sum=get(res); max=max>sum? max:sum; } return max; } public static void main(String args[]){ int arr[][]={{1 ,0, 1, 0 ,0},{1 ,1 ,1 ,1 ,1},{1, 1, 1 ,1, 1},{1 ,0 ,0 ,1 ,0}}; //ystem.out.println(Arrays.toString(maxSize(arr))); System.out.print(maxSize(arr)); } }
该博客探讨如何在只包含0和1的矩阵中找到最大的全为1的正方形子矩阵。问题来源于寻找一个无序矩阵中,仅由1组成的最大正方形区域的大小。

被折叠的 条评论
为什么被折叠?



