暴力枚举能过(^__^)
2025-06-22 18:18:31
发布于:北京
26阅读
0回复
0点赞
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
int a[1001][1001],s[1001][1001];
for (int i=1;i<=n;i++)
{
for (int j=1;j<=n;j++)
{
cin>>a[i][j];//输入
}
}
for (int i=1;i<=n;i++)
{
for (int j=1;j<=n;j++)
{
s[i][j]=s[i-1][j]+s[i][j-1]-s[i-1][j-1]+a[i][j];//二维前缀和
}
}
int mx=-INT_MAX;//找最大
for (int i=1;i<=n;i++)
{
for (int j=1;j<=n;j++)
{
for (int x2=i;x2<=n;x2++)
{
for (int y2=j;y2<=n;y2++)//暴力枚举右下角
{
int x1=i;
int y1=j;
int ans=s[x2][y2]-s[x1-1][y2]-s[x2][y1-1]+s[x1-1][y1-1];//和,模板
if (ans>mx)
{
mx=ans;
}
}
}
}
}
cout<<mx;//输出
return 0;//华丽收尾(*__*)
//基本都是模板
}
这里空空如也
有帮助,赞一个