#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