panshengqi @ 2024-09-27 20:06:28
#include<bits/stdc++.h>
using namespace std;
int n,m,a[15][15],l;
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
{
string s;
cin>>s;
for(int j=0;j<s.size();j++)
{
a[i][j+1]=s[j]-'0';
}
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n&&i<=j;j++)
{
for(int k=1;k<=m;k++)
{
for(int s=1;s<=m&&k<=s;s++)
{
int w=0,q=0;
if((s-k)*(j-i)%2==1) {
continue;
}
for(int b=i;b<=j;b++)
{
for(int c=k;c<=s;c++)
{
if(a[b][c]==1) w++;
else if(a[b][c]==0) q++;
}
}
if(w==q)l=max(l,(j-i)*(s-k));
}
}
}
}
cout<<l;
return 0;
}
这是代码!!!
by kbzcz @ 2024-09-27 20:10:38
@panshengqi 贡献应该是 (j-i+1)*(s-k+1)
,但还是只有65。
by kbzcz @ 2024-09-27 20:16:45
@panshengqi 还有上面 j
和 s
的循环条件写错了,格子数计算也得改。
by Double_Sheep @ 2024-09-27 20:23:10
@panshengqi
贡献需要 +1
,循环条件要像下面这样写,不然不满足就直接挂了:
#include<bits/stdc++.h>
using namespace std;
int n,m,a[15][15],l;
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
{
string s;
cin>>s;
for(int j=0;j<s.size();j++)
{
a[i][j+1]=s[j]-'0';
}
}
for(int i=1;i<=n;i++)
{
for(int j=i;j<=n;j++)
{
for(int k=1;k<=m;k++)
{
for(int s=k;s<=m;s++)
{
int w=0,q=0;
if((s-k+1)*(j-i+1)%2==1) {
continue;
}
for(int b=i;b<=j;b++)
{
for(int c=k;c<=s;c++)
{
if(a[b][c]==1) w++;
else if(a[b][c]==0) q++;
}
}
if(w==q)l=max(l,(j-i+1)*(s-k+1));
}
}
}
}
cout<<l;
return 0;
}
by panshengqi @ 2024-09-28 07:07:32
感谢各位大佬,已关注
by panshengqi @ 2024-09-28 07:08:36
@Double_Sheep @kbzcz