您的位置:首页 > 其它

最大01子矩阵

2016-09-10 18:54 232 查看
这是个好玩的东西 哈哈哈 不用说使用悬线法

对应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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  算法