DFS+记忆化搜索模板题

 滑雪DFS+记忆化搜索模板题_第1张图片

#include
using namespace std;
int dx[4] = {1,0,-1,0};
int dy[4] = {0,1,0,-1};
const int maxrc = 100 + 5;
int r,c;
int m[maxrc][maxrc];
int f[maxrc][maxrc];
//设f[i][j]为到达[i,j]时最优值
//f[i][j] = max{f[i+a][i+b] | a和b是4个坐标增量,m[i][j]0&&ty>0&&tx<=r&&ty<=c&&m[tx][ty]>m[x][y])
        {
            t = dfs(tx,ty)+1;
            maxt = max(t, maxt);
        }
    }
    f[x][y] = maxt;//记忆化
    return maxt;
}
int main () 
{
    scanf("%d%d", &r, &c);
    for (int i=1;i<=r;i++)
    for (int j=1;j<=c;j++)
    scanf("%d", &m[i][j]); 
    memset(f, 0, sizeof(f));
    int ans = 0;
    for (int i=1;i<=r;i++)
    for (int j=1;j<=c;j++)
    {
        f[i][j] = dfs(i,j);
        ans = max(ans, f[i][j]);
    }
    printf("%d\n", ans);
    return 0;
}

你可能感兴趣的:(深度优先,c++)