题意:FatMouse在一个N*N方格上找吃的,每一个点(x,y)有一些吃的,FatMouse从(0,0)的出发去找吃的。每次最多走k步,他走过的位置能够吃掉吃的。保证吃的数量在0-100。规定他仅仅能水平或者垂直走,每走一步。下一步吃的数量须要大于此刻所在位置,问FatMouse最多能够吃多少东西。
须要对步数进行扩展。
#includeusing namespace std;#define N 101#define max(a,b) ((a)>(b)?(a):(b))int dp[N][N],map[N][N];int k,n;int dir[4][2]={ {1,0},{0,1},{-1,0},{0,-1}};bool ok(int x,int y) //推断边界{ return x>=0 && y>=0 && x 0) return dp[x][y]; for(i=0;i<4;i++) for(j=1;j<=k;j++) { xt=dir[i][0]*j+x; yt=dir[i][1]*j+y; if(ok(xt,yt)&&map[x][y]