记忆化搜索

 其实就是在搜索的过程中
把每个点的答案记录下来
因为他是一个矩阵
f[x][y]记得就是x,y这个点出发的最大滑雪距离
如果是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出发的最长路径
核心代码

 

posted @ 2017-08-07 21:20  pandaB  阅读(118)  评论(0)    收藏  举报