#开O2优化WA了3个点,70分,求大佬帮看看问题所在,感谢!

P1434 [SHOI2002] 滑雪

fanfanfan115 @ 2022-03-26 12:36:35

#include <iostream>
using namespace std;
int r,c,mx,my,a[101][101],ans,Next[4][2]={{0,1},{1,0},{0,-1},{-1,0}};
void dfs(int x,int y,int step)
{
    ans=max(ans,step);
    int tx,ty,k,flag=0,maxx=0;
    for(k=0;k<=3;k++)
    {
        tx=x+Next[k][0];
        ty=y+Next[k][1];
        if(tx<1||tx>r||ty<1||ty>c) continue;
        if(a[tx][ty]<a[x][y]&&a[tx][ty]>maxx)
        {
            maxx=a[tx][ty];
            mx=tx,my=ty;
            flag=1;
        }
    }
    if(flag==1)
    dfs(mx,my,step+1);
}
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++)
        dfs(i,j,1);
        cout<<ans;
    return 0;
}

|