记忆化搜索
其实就是在搜索的过程中
把每个点的答案记录下来
因为他是一个矩阵
把每个点的答案记录下来
因为他是一个矩阵
f[x][y]记得就是x,y这个点出发的最大滑雪距离
如果是0的话就继续dfs,如果不是0的话就直接返回这个值就OK,就不用继续深搜了
如果是0的话就继续dfs,如果不是0的话就直接返回这个值就OK,就不用继续深搜了
int dfs(int x,int y) { if(x<1||x>r||y<1||y>c)return 0; if(f[x][y])return f[x][y]; for(int i=0;i<4;i++) { if(x+dpx[i]<=r&&x+dpx[i]>0&&y+dpy[i]<=c&&y+dpy[i]>0&&a[x][y]>a[x+dpx[i]][y+dpy[i]]) f[x][y]=max(f[x][y],1+dfs(x+dpx[i],y+dpy[i])); } return f[x][y]; } //dfs(x,y)表示搜索从x,y出发的最长路径

浙公网安备 33010602011771号