求助,为什么第一个点和最后一个点错了,感觉没有问题啊!

P1434 [SHOI2002] 滑雪

forever_0805 @ 2019-10-12 18:26:46

#include<bits/stdc++.h>

using namespace std;
long long n,m,a[120][120],b[120][120],ans=-1,k;
long long dfs(long long x,long long y,long long z)
{
    if (b[x][y]!=0) return b[x][y]+z;
    if (x>1&&a[x][y]>a[x-1][y]) b[x][y]=max(dfs(x-1,y,z+1),b[x][y]);
    if (x<n&&a[x][y]>a[x+1][y]) b[x][y]=max(dfs(x+1,y,z+1),b[x][y]);
    if (y>1&&a[x][y]>a[x][y-1]) b[x][y]=max(dfs(x,y-1,z+1),b[x][y]);
    if (y<m&&a[x][y]>a[x][y+1]) b[x][y]=max(dfs(x,y+1,z+1),b[x][y]);
    return max(b[x][y],z);
}
int main()
{
    cin>>n>>m;
    for (int i=1;i<=n;i++)
      for (int j=1;j<=m;j++)
        cin>>a[i][j];

    for (int i=1;i<=n;i++)
      for (int j=1;j<=m;j++)
          ans=max(ans,dfs(i,j,0)); 

    cout<<ans+1;

    return 0;
} 

by 北美邹233 @ 2019-10-12 18:35:03

特判打表吧 (逃)


|