最大01子矩阵

来源:互联网 发布:淘宝客贷条件 编辑:程序博客网 时间:2024/06/06 04:54

这是个好玩的东西 哈哈哈 不用说使用悬线法

对应codevs的1159 可以看看题目

代码很好理解 哦哈哈哈

#include<iostream>using namespace std;int tmp,l[2001],r[2001],n,ans,t[2001],h[2001];int main() {    cin>>n;    for(int i=1;i<=n;i++)      l[i]=r[i]=i;    for(int i=1;i<=n;i++)     {          tmp=1;        for(int j=1;j<=n;j++)         {            cin>>t[j];            if(!t[j]){                h[j]++;            }else h[j]=0;            if(t[j]==1)              tmp=j+1;            if(t[j]==0)              {                l[j]=max(l[j],tmp);              }else l[j]=1;         }        tmp=n;        for(int j=n;j>=1;j--)         {            if(t[j]==1)                tmp=j-1;            if(t[j]==0)               r[j]=min(r[j],tmp);            else r[j]=n;            ans=max(ans,(r[j]-l[j]+1)*h[j]);         }     }     cout<<ans; }
0 0
原创粉丝点击