本文主要是介绍JD 1497:面积最大的全1子矩阵,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
OJ题目:click here~~
题目分析:经典题目。。
const int maxn = 1008 ;
int n , m ;
int x[maxn][maxn] ;
int h[maxn] , Left[maxn] , Right[maxn] ;
void check(int &a , int b){if(b > a) a = b ;
}
void all_1_matrix(){int ans = 0 , i , j ;memset(h , 0 , sizeof(h)) ;for(i = 0;i < n;i++){for(j = 0;j < m;j++)if(x[i][j] == 1) h[j]++ ;else h[j] = 0 ;for(j = 0;j < m;j++){Left[j] = j ;while(Left[j] > 0 && h[j] <= h[Left[j] - 1])Left[j] = Left[Left[j] - 1] ;}for(j = m - 1;j >=0 ;j--){Right[j] = j ;while(Right[j] <m-1 && h[j] <= h[Right[j] + 1])Right[j] = Right[Right[j] + 1] ;}for(j = 0;j < m;j++)check(ans , (Right[j] - Left[j] + 1)*h[j]) ;}printf("%d\n",ans) ;
}
int main(){int i , j ;while(scanf("%d%d",&n,&m) != EOF){for(i = 0;i < n;i++)for(j = 0;j < m;j++)scanf("%d",&x[i][j]) ;all_1_matrix() ;}return 0 ;
}
这篇关于JD 1497:面积最大的全1子矩阵的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!