60求调

P1434 [SHOI2002] 滑雪

ylzxbcyy @ 2024-01-27 18:40:43

#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
const int N=105;
int dx[]={0,0,1,-1};
int dy[]={1,-1,0,0};
int f[N][N]={0};
int high[N][N];
int xx,yy;
int m,n;
int dfs(int x,int y)
{if(f[x][y])return f[x][y];
f[x][y]=1;
    for(int i=0;i<4;i++)
    {
        xx=x+dx[i];
        yy=y+dy[i];
    if(high[xx][yy]<high[x][y]&&xx>=1&&xx<=m&&yy>=1&&yy<=n){
        dfs(xx,yy);
        f[x][y]=max(f[x][y],f[xx][yy]+1);
    }
    }
    return f[x][y];
}

int main()
{int cnt=0;
    cin>>m>>n;
    for(int i=1;i<=m;i++)
    {
        for(int p=1;p<=n;p++)
        {
            cin>>high[i][p];

        }
    }
    for(int i=1;i<=m;i++)
    {
        for(int p=1;p<=n;p++)
        {
            cnt=max(cnt,dfs(i,p));

        }
    }
    cout<<cnt;
}

|