求助!

P1434 [SHOI2002] 滑雪

DYhzx_QWQ @ 2022-07-13 20:20:08

#include<bits/stdc++.h>
using namespace std;
int a[101][101],n,f[101][101],ans=INT_MIN,m,fx[11]={0,1,0,-1,0},fy[11]={0,0,1,0,-1};
int check(int x,int y) {
    if(x>0&&y>0&&x<=n&&y<=m) return 1;
    return 0;
}
int dfs(int x,int y) {
    if(f[x][y]!=1) return f[x][y];
    for(int i=1;i<=4;i++) {
        int xx=x+fx[i],yy=y+fy[i];
        if(check(xx,yy)&&a[x][y]>a[xx][yy]) {
            f[x][y]=max(f[x][y],dfs(xx,yy)+1);
        }
    }
    return f[x][y];
}
int main() {
    cin>>n>>m;
    for(int i=1;i<=n;i++) {
        for(int j=1;j<=m;j++) {
            cin>>a[i][j];
            f[i][j]=1;
        }
    }
    dfs(1,1);
    for(int i=1;i<=n;i++) {
        for(int j=1;j<=m;j++) {
            ans=max(ans,f[i][j]);
        }
    }
    cout<<ans;
    return 0;
}

by lao_li @ 2022-07-13 20:34:32

@Huangzixin20090220 可能的起点只有(1,1)一个吗?


by DYhzx_QWQ @ 2022-07-13 20:37:53

谢谢


|