homi @ 2023-08-06 15:41:05
#include <bits/stdc++.h>
using namespace std;
int r,c,a[105][105],b[105][105],f[4][2]={{0,1},{1,0},{-1,0},{0,-1}},ans;
int main()
{
cin>>r>>c;
for(int i=1;i<=r;i++)
for(int j=1;j<=c;j++)
cin>>a[i][j];
for(int i=1;i<=r;i++)
for(int j=1;j<=c;j++)
b[i][j]=1;
for(int i=1;i<=r;i++)
for(int j=1;j<=c;j++)
{
queue<int>qx,qy;
qx.push(i);
qy.push(j);
while(!qx.empty())
{
int ux=qx.front(),uy=qy.front();
qx.pop();
qy.pop();
for(int k=0;k<4;k++)
{
int x=ux+f[k][0],y=uy+f[k][1];
if(x>=0&&x<=r&&y>=0&&y<=c&&a[x][y]>a[ux][uy])
{
b[x][y]=max(b[ux][uy]+1,b[x][y]);
qx.push(x);
qy.push(y);
}
}
}
}
for(int i=1;i<=r;i++)
for(int j=1;j<=c;j++)
ans=max(ans,b[i][j]);
cout<<ans;
return 0;
}
by 啊吧怪 @ 2023-08-06 15:52:22
这题用bfs会T,好像很难优化到时间限制内
by homi @ 2023-08-07 11:25:47
@啊吧怪 谢谢 改深搜了
by abcaawtq @ 2023-09-23 22:44:56
@homi 要用记忆化搜索