大便时切了个菜题

没用什么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;
}
posted on 2006-08-05 23:02  AnewR  阅读(95)  评论(0)    收藏  举报