蒟蒻求解

P1434 [SHOI2002] 滑雪

喵の耳 @ 2019-02-16 11:10:06

莫名WA第一个点

WA的一声就哭了

记忆化

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int dx[4]={0,0,1,-1};
int dy[4]={1,-1,0,0};
int g[101][101];
int h[101][101];
bool vis[101][101];
int c,r;
int maxn,tmp,mxn;
int f(int x,int y){
    if(vis[x][y])  return g[x][y];
    vis[x][y]=1;
    maxn=1;
    for(int k=0;k<4;k++){
        int nx=dx[k]+x;
        int ny=dy[k]+y;
        if(nx<1||nx>r||ny<1||ny>c)  continue;
        if(h[nx][ny]>=h[x][y])  continue;
        int tmp=f(nx,ny);
        maxn=max(maxn,tmp+1);
    }
    g[x][y]=maxn;
    return g[x][y];
}
int main(){
    scanf("%d %d",&r,&c);
    for(int i=1;i<=r;i++)
        for(int j=1;j<=c;j++)
            scanf("%d",&h[i][j]);
    for(int i=1;i<=r;i++)
        for(int j=1;j<=c;j++){
            tmp=f(i,j);
            mxn=max(mxn,tmp);
        }
    printf("%d",mxn);
    return 0;
}

|