2163 最大正方形子矩阵

来源:互联网 发布:软件著作权申请时间 编辑:程序博客网 时间:2024/05/22 04:41
描述

有一块M*N大小的,由0、1组成的矩阵。现在让你计算出这个矩阵中一块最大的正方形子矩阵,使得该子矩阵全部由0组成。

输入

第一行一个数P,为数据组数(P<=10)。

对于每一组数据,第一行两个数M,N(1<=M,N<=100)。

接下来M行,每行N个数字,该数字是0或者1。

输出

对于每组数据,输出最大正方形子矩阵的边长。

样例输入
1
4 4
1 0 1 1
1 0 0 1
1 0 0 0
1 0 0 1
样例输出
2
模拟题
#include<iostream>using namespace std;int a[3000][3000];int min(int a, int  b , int c){if( a < b ){return (a<c)?a:c;}else{return (b<c)?b:c;    }}int main( ){int m , n ;int t,number;int i,j;bool in;cin>>number;for(t=0;t<number;t++){cin >> m >> n;    for( i = 0 ; i < m ; ++i){for(  j = 0 ; j < n ; ++j ){cin >>in;if( in ){a[i][j] = 0;          }else{a[i][j] = 1;          }}}for(  i = 1 ; i < m ; ++i ){for(  j = 1 ; j < n ; ++j ){if( a[i][j] != 0 ){a[i][j] += min(a[i-1][j],a[i-1][j-1],a[i][j-1]);          }}}int  biggest=a[0][0];    for( i = 0 ; i < m ; ++i ){for( j = 0 ; j < n ; ++j ){if( a[i][j] > biggest ){biggest = a[i][j];          }}}cout << biggest << endl; }return 0;  }


原创粉丝点击