Clay_L @ 2023-01-31 11:24:28
代码:
#include<bits/stdc++.h>
using namespace std;
int n,m,a[111][111],f[111][111],ans;
int dx[5]={-1,0,1,0,0},dy[5]={0,1,0,-1,0};
int dfsp(int x,int y)
{
int t=f[x][y],xx,yy;
if(t!=-1) return t;
t=1;
for(int i=0;i<4;i++)
{
xx=x+dx[i],yy=y+dy[i];
if((xx<1||xx>n||yy<1||yy>m)||a[x][y]<=a[xx][yy]) continue;
t=max(t,dfsp(xx,yy)+1);
}
return t;
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) cin>>a[i][j],f[i][j]=-1;
for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) ans=max(ans,dfsp(i,j));
cout<<ans<<endl;
return 0;
}
by Clay_L @ 2023-01-31 11:59:52
是 #2 TLE
by Siegerkranz_2735 @ 2023-01-31 12:04:03
改了一下记忆化 现在ac了
#include<bits/stdc++.h>
using namespace std;
const int N=105;
const int dx[4]={0,0,-1,1},dy[4]={-1,1,0,0};
int n,m,ans;
int a[N][N],f[N][N];
int dfs(int x,int y){
if (f[x][y]>0) return f[x][y];
int res=1;
for (int i=0;i<=3;i++){
int tx=x+dx[i],ty=y+dy[i];
if (tx>=1&&tx<=n&&ty>=1&&ty<=m&&a[x][y]>a[tx][ty])res=max(res,dfs(tx,ty)+1);
}
f[x][y]=res;
return f[x][y];
}
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));
cout<<ans;
return 0;
}
by Siegerkranz_2735 @ 2023-01-31 12:04:21
@TechnobladePlus
by ttltony @ 2023-01-31 13:28:18
@2735 刚刚跟我发的?是什么意思啊,问一下
by Clay_L @ 2023-01-31 13:32:14
@2735 感谢dalao,此题已过
by Siegerkranz_2735 @ 2023-01-31 13:38:33
@ttltony 我不理解你为什么要骂楼主 代码不会调为什么不能发贴子
by ttltony @ 2023-01-31 13:40:35
@2735 他就坐我旁边,不直接问我还来发帖子
by Clay_L @ 2023-01-31 13:54:17
@ttltony 好像是你不告诉我吧。。。。。。。
by Clay_L @ 2023-01-31 13:54:57
@ttltony 都问你几次了
by ttltony @ 2023-01-31 13:56:51
@TechnobladePlus 明明是你说自己连bfs都不会,我都不想教你了(我做你旁边,你还要来这里说,直接跟我说不就行了)