愚末语tenseTL @ 2021-01-03 15:54:29
#include<bits/stdc++.h>
using namespace std;
#define ll long long
int s[505][505];
ll dp[505][505];
ll n,m,sum=0;
ll dfs(int x,int y)
{
int a=0,b=0,c=0,d=0;
if(dp[x][y])return dp[x][y];
if(x+1<=m)if(s[x+1][y]<s[x][y])a=dfs(x+1,y);
if(x-1>=1)if(s[x-1][y]<s[x][y])b=dfs(x-1,y);
if(y+1<=n)if(s[x][y+1]<s[x][y])c=dfs(x,y+1);
if(y-1>=1)if(s[x][y-1]<s[x][y])d=dfs(x,y-1);
return dp[x][y]=max(max(a,b),max(c,d))+1;
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
{cin>>s[i][j];}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
sum=max(dfs(i,j),sum);
}
}
cout<<sum<<endl;
return 0;
}
我的思路和其他人的一致,但一直WA第一个case,找不出bug出来,因为没有测试案例,所以也不知道自己错在哪个点上。大佬帮我看看吧!