hdu 1078

来源:互联网 发布:java调dll内存泄露 编辑:程序博客网 时间:2024/06/01 13:46

http://acm.hdu.edu.cn/showproblem.php?pid=1078

#include <bits/stdc++.h>#define maxs 2020#define mme(i,j) memset(i,j,sizeof(i))using namespace std;int n,k;int a[202][202];int dp[202][202];int wax[5] = {1,0,-1,0};int way[5] = {0,1,0,-1};int check(int x,int y){    if(x>=0&&x<n&&y>=0&&y<n) return 1;    return 0;}int dfs(int x,int y){    int nowx,nowy,tmp=0,mx=0;    if(dp[x][y]>0) return dp[x][y];    for(int i=0;i<4;i++)    {        for(int kk=1;kk<=k;kk++)        {            nowx = x + wax[i]*kk;            nowy = y + way[i]*kk;            if( !check( nowx,nowy ) ) continue;            if(a[nowx][nowy]>a[x][y])            {             //   printf("a[%d][%d] is %d\n",nowx,nowy,a[nowx][nowy]);                mx = max( mx , dfs( nowx , nowy ) );             //   printf( "Mx is %d ---- Tmp is %d\n",mx,tmp);            }        }    }    dp[x][y] = mx+a[x][y];    return dp[x][y];}int main(){    while(~scanf("%d%d",&n,&k))    {        if( n==-1 && k==-1 ) break;        mme( dp,0 );        for(int i=0;i<n;i++) {            for(int j=0;j<n;j++)                scanf("%d",&a[i][j]);        }        printf("%d\n",dfs(0,0) );    }    return 0;}
原创粉丝点击