洛谷P1434。本题边界处理很有趣
#include<bits/stdc++.h>
using namespace std;
int f[101][101];int n[102][102];int r,c;
int sear(int n0,int m0)
{
if(n0==0||m0==0)return 0;
if(n0==r+1||m0==c+1)return 0;
if(f[n0][m0]!=-1)return f[n0][m0];
//int max=0;
if(n[n0][m0]>n[n0-1][m0])f[n0][m0]=1+sear(n0-1,m0);
if(n[n0][m0]>n[n0+1][m0])f[n0][m0]=1+sear(n0+1,m0)>f[n0][m0]?1+sear(n0+1,m0):f[n0][m0];
if(n[n0][m0]>n[n0][m0-1])f[n0][m0]=1+sear(n0,m0-1)>f[n0][m0]?1+sear(n0,m0-1):f[n0][m0];
if(n[n0][m0]>n[n0][m0+1])f[n0][m0]=1+sear(n0,m0+1)>f[n0][m0]?1+sear(n0,m0+1):f[n0][m0];
f[n0][m0]=f[n0][m0]>1?f[n0][m0]:1;
return f[n0][m0];
}
int main()
{
cin>>r>>c;
for(int i=1;i<=r;i++)
for(int j=1;j<=c;j++)
{
cin>>n[i][j];
}
memset(f,-1,sizeof(f));
int max=0;
for(int i=1;i<=r;i++)
for(int j=1;j<=c;j++)
{
int temp=sear(i,j);
if(temp>max)max=temp;
}
cout<<max;
return 0;
}
标签:max,return,int,一例,搜索,m0,sear,n0,记忆
From: https://www.cnblogs.com/Arc-ux/p/18405337