大便时切了个菜题
没用什么O(3)的算法。直接4重循环AC,0.41秒啊,汗
#include <iostream>
using namespace std;
//S[i][j] = S[i - 1][j] + S[i][j - 1] - S[i - 1][j - 1] + E[i][j].
int main()
{
int max=0,sum=0;
int i,j,k,x,y;
int p[100][100];
int key[100][100];
int n;
cin >> n;
for(i=0;i<n;++i)
for(j=0;j<n;++j)
{
cin >> p[i][j];
}
for(i=0;i<n;++i)
for(j=0;j<n;++j)
{
for(x=i;x<n;++x)
for(y=j;y<n;++y)
{
key[x][y]=0;
if(x-i-1>=0)
key[x][y]+=key[x-1][y];
if(y-1-j>=0)
key[x][y]+=key[x][y-1];
if(x-i-1>=0&&y-1-j>=0)
key[x][y]-=key[x-1][y-1];
key[x][y]+=p[x][y];
if(key[x][y]>max) max=key[x][y];
}
}
cout << max << endl;
return 0;
}
#include <iostream>
using namespace std;
//S[i][j] = S[i - 1][j] + S[i][j - 1] - S[i - 1][j - 1] + E[i][j].
int main()
{
int max=0,sum=0;
int i,j,k,x,y;
int p[100][100];
int key[100][100];
int n;
cin >> n;
for(i=0;i<n;++i)
for(j=0;j<n;++j)
{
cin >> p[i][j];
}
for(i=0;i<n;++i)
for(j=0;j<n;++j)
{
for(x=i;x<n;++x)
for(y=j;y<n;++y)
{
key[x][y]=0;
if(x-i-1>=0)
key[x][y]+=key[x-1][y];
if(y-1-j>=0)
key[x][y]+=key[x][y-1];
if(x-i-1>=0&&y-1-j>=0)
key[x][y]-=key[x-1][y-1];
key[x][y]+=p[x][y];
if(key[x][y]>max) max=key[x][y];
}
}
cout << max << endl;
return 0;
}
浙公网安备 33010602011771号