zhaoyoulan @ 2019-07-10 16:06:53
#include<iostream>
using namespace std;
int dx[4]={1,-1,0,0};
int dy[4]={0,0,1,-1};
int map[110][110];//记录高度
int ans[110][110];//记录到i,j这一点最长滑道
int r,c;
void dfs(int x,int y,int bu)//
{
for(int i=0;i<=3;i++)
if(x+dx[i]>0&&x+dx[i]<=r&&dy[i]+y>0&&dy[i]+y<=c&&map[x][y]>map[x+dx[i]][y+dy[i]]&&bu+1>ans[x+dx[i]][y+dy[i]])//判断不越界和下一步走的能比原来的长
{
ans[x+dx[i]][y+dy[i]]=bu+1;
dfs(x+dx[i],dy[i]+y,bu+1);
}
}
int main()
{
cin>>r>>c;
for(int i=1;i<=r;i++)
for(int j=1;j<=c;j++)
cin>>map[i][j];
for(int i=1;i<=r;i++)
for(int j=1;j<=c;j++)
ans[i][j]=1; //每个点都搜
for(int i=1;i<=r;i++)
for(int j=1;j<=c;j++)
dfs(i,j,1);
int mx=0;
for(int i=1;i<=r;i++)
for(int j=1;j<=c;j++)
if(ans[i][j]>mx)
mx=ans[i][j];
cout<<mx;
}
qwq摆脱各位dalao了
by pzc2004 @ 2019-07-10 16:10:55
把cin,cout改成scanf,printf
by zhaoyoulan @ 2019-07-10 21:57:57
@wemspzc 换成快读了,555还是不行
by 2934729ASA @ 2019-07-16 11:12:39
巧了我也是记忆化搜索第二个点TLE