80分,WA*2求助

P1434 [SHOI2002] 滑雪

basachenboming @ 2022-01-07 22:16:42

#include<bits/stdc++.h>
using namespace std;
int a[201][201];
int n,m;
int maxx[201][201]={-1};
inline int read() 
{
    int x=0,f=1;
    char c=getchar();
    while(c<'0'||c>'9'){if(c=='-') f=-1;c=getchar();}
    while(c>='0'&&c<='9') x=x*10+c-'0',c=getchar();
    return x*f;
}
int k;
int check; 
void dfs(int tot,int x,int y)
{
            k=tot;
            check=0;
            if(maxx[x][y]<tot)
            {
                maxx[x][y]=tot;
            }
            if(a[x-1][y]<a[x][y]&&maxx[x-1][y]<=tot&&x-1>0&&x-1<=n&&y>0&&y<=m)
            {
                dfs(tot+1,x-1,y);
            }
            if(a[x+1][y]<a[x][y]&&maxx[x+1][y]<=tot&&x+1>0&&x+1<=n&&y>0&&y<=m)
            {
                dfs(tot+1,x+1,y);
            }
            if(a[x][y-1]<a[x][y]&&maxx[x][y-1]<=tot&&x>0&&x<=n&&y-1>0&&y-1<=m)
            {
                dfs(tot+1,x,y-1);
            }
            if(a[x][y+1]<a[x][y]&&maxx[x][y+1]<=tot&&x>0&&x<=n&&y+1>0&&y+1<=m)
            {
                dfs(tot+1,x,y+1);
            }
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
{
    for(int j=1;j<=m;j++)
    {
        a[i][j]=read();
    }
}
int ans=0;
for(int i=1;i<=n;i++)
{
    for(int j=1;j<=m;j++)
    {
    dfs(1,i,j);
    ans=max(ans,k);
    }
}
cout<<ans;
return 0;
}

|