为求助,什么会MLE,过了5个

P1434 [SHOI2002] 滑雪

15297517869a @ 2022-04-04 11:47:08

#include<iostream>
#include<algorithm>
using namespace std;
int tab[105][105];
int val[105][105];
int czx[]={0,0,1,-1};
int czy[]={1,-1,0,0};
int dfs(int ,int);
int row,col;
int res=0;
int main()
{
    cin>>row>>col;
    for(int i=1;i<=row;i++)
    {
        for(int j=1;j<=col;j++)
        {
            int a;
            cin>>a;
            tab[i][j]=a;
        }
    }

    for(int i=1;i<=row;i++)
        for(int j=1;j<=col;j++)
            if(val[i][j]==0)
                dfs(i,j);
    cout<<res<<endl;
    return 0;
}
int dfs(int m,int n)
{
    if(val[m][n]!=0)
        return val[m][n];
    int maxv=0;
    int xx,yy;
    for(int i=0;i<4;i++)
    {
        xx=m+czx[i];
        yy=n+czy[i];
        if(xx>=1&&xx<=row&&yy>=1&&yy<=col&&tab[m][n]>=tab[xx][yy])
        {
            maxv=max(maxv,dfs(xx,yy));
        }
    }
    maxv+=1;
    val[m][n]=maxv;
    res=max(res,val[m][n]);
    return maxv;
}

|