心如止水
Je n'ai pas le temps
posts - 400,comments - 130,trackbacks - 0
这题叫DP么?
以下是我的代码:
#include<iostream>
#include
<algorithm>
#include
<cstdio>
#include
<cstring>
using namespace std;
const int kMaxn (1007);

int d[kMaxn][kMaxn];

int main()
{
    
/*
    freopen("data.in","r",stdin);
    freopen("data.out","w",stdout);
    //
*/
    
    
int T;
    cin
>>T;
    
while(T--)
    {
        
int m,n,x,y;
        cin
>>m>>n>>x>>y;
        memset(d,
0,kMaxn*kMaxn*sizeof(int));
        
for(int i=1;i<=m;i++)
            
for(int j=1;j<=n;j++)
            {
                
int t;
                cin
>>t;
                d[i][j]
=d[i-1][j]+d[i][j-1]-d[i-1][j-1]+t;
            }
        
/*
        for(int i=1;i<=m;i++)
        {
            for(int j=1;j<=n;j++)
                cout<<d[i][j]<<" ";
            cout<<endl;
        }
        cout<<endl;
        //
*/
        
int ans(0);
        
for(int i=1;i<=m;i++)
            
for(int j=1;j<=n;j++)
            {
                
if(i>=&& j>=y)
                    ans
=max(ans,d[i][j]-d[i-x][j]-d[i][j-y]+d[i-x][j-y]);
                
if(i>=&& j>=x)
                    ans
=max(ans,d[i][j]-d[i-y][j]-d[i][j-x]+d[i-y][j-x]);
            }
            
        cout
<<ans<<endl;
    }
    
return 0;
}
posted on 2011-03-07 20:54 lee1r 阅读(399) 评论(0)  编辑 收藏 引用 所属分类: 题目分类:递推/递归

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理