#include <iostream>
#include <cstring>
#include <string>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <vector>
#include <queue>
#include <map>
#define inf 0x3f3f3f3f
#define ll __int64
using namespace std;
int mp[105][105],d[105][105],n,k;
int dx[]={1,-1,0,0};
int dy[]={0,0,1,-1};
int dfs(int x,int y)
{
if(d[x][y]) return d[x][y];
int i,j,ret=0,xx,yy,tmp;
for(i=0;i<4;i++)
{
for(j=1;j<=k;j++)
{
xx=x+j*dx[i];
yy=y+j*dy[i];
if(xx>=0&&xx<n&&yy>=0&&yy<n&&mp[x][y]<mp[xx][yy])
{
tmp=dfs(xx,yy);
if(ret<tmp)
ret=tmp;
}
}
}
return d[x][y]=ret+mp[x][y];
}
int main()
{
int i,j;
while(scanf("%d%d",&n,&k)&&(n!=-1||k!=-1))
{
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d",&mp[i][j]);
memset(d,0,sizeof d);
printf("%d\n",dfs(0,0));
}
return 0;
}
hdu 1087 zoj 1107 FatMouse and Cheese
原文:http://blog.csdn.net/u011032846/article/details/19091333