样例过不了 50分代码

P1434 [SHOI2002] 滑雪

Jamison @ 2022-09-08 13:14:34

#include <bits/stdc++.h>
using namespace std;
int r,c,a[105][105],ans,temp,s[105][105];
int  dx[10]={0,1,-1,0,0},dy[10]={0,0,0,-1,1}; 
int dfs(int r,int c)
{
    if(s[r][c]) return s[r][c];
    s[r][c]=1;
    for(int i=1;i<=4;i++)
    {
        int x=r+dx[i],y=c+dy[i];
        if(x>0 && y>0 && x<=r && y<=c && a[x][y]<a[r][c])
        {   
            dfs(x,y);       
            s[r][c]=max(s[r][c],s[x][y]+1);     
        }  
    }
    return s[r][c];
}
int main()
{
    cin>>r>>c;
    for(int i=1;i<=r;i++)
        for(int j=1;j<=c;j++)
            cin>>a[i][j];
    for(int i=1;i<=r;i++)
    {
        for(int j=1;j<=c;j++)
           ans=max(ans,dfs(i,j));
    }
    cout<<ans;
    return 0;
}

|