记忆化搜索50求助
查看原帖
记忆化搜索50求助
386921
zzyxl_qaq楼主2023/5/8 21:04
#include<bits/stdc++.h>
#define re register
#define ll long long
#define inl inline
ll h[105][105],f[105][105],ans(-1);
inl ll dfs(ll x,ll y){
    if(f[x][y])return f[x][y];
    if(h[x][y]>h[x+1][y])f[x][y]=std::max(dfs(x+1,y)+1,f[x][y]);
    if(h[x][y]>h[x-1][y])f[x][y]=std::max(dfs(x-1,y)+1,f[x][y]);
    if(h[x][y]>h[x][y+1])f[x][y]=std::max(dfs(x,y+1)+1,f[x][y]);
    if(h[x][y]>h[x][y-1])f[x][y]=std::max(dfs(x,y-1)+1,f[x][y]);
    return f[x][y];
}
int main(){
    std::memset(f,0,sizeof(f));
    re ll n,m;
    scanf("%lld %lld",&n,&m);
    for(re ll i(1);i<=n;++i){
        for(re ll j(1);j<=m;++j)scanf("%lld",&h[i][j]);
    }
    for(re ll i(1);i<=n;++i){
        for(re ll j(1);j<=m;++j)ans=std::max(ans,dfs(i,j));
    }
    printf("%lld",ans);
}
2023/5/8 21:04
加载中...