记录编号 |
317658 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[UVa 10285] 最长滑坡 |
最终得分 |
100 |
用户昵称 |
Ostmbh |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.375 s |
提交时间 |
2016-10-08 13:40:12 |
内存使用 |
2.96 MiB |
显示代码纯文本
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int f[510][510]={0};
int vis[510][510]={0};
int A[510][510];
int X[5]={0,1,0,0,-1};
int Y[5]={0,0,1,-1,0};
int r,c;
inline int dfs(int x,int y){
if(vis[x][y])
return f[x][y];
int ok=0;
vis[x][y]=1;
for(int i=1;i<=4;i++){
int x1=x+X[i],y1=y+Y[i];
if(x1<1||x1>r||y1<1||y1>c||A[x1][y1]>=A[x][y])
continue;
else {
ok=1;
f[x][y]=max(f[x][y],dfs(x1,y1)+1);
}
}
if(!ok)
return 1;
else return f[x][y];
}
int main(){
freopen("shunzhi.in","r",stdin);
freopen("shunzhi.out","w",stdout);
cin>>r>>c;
for(int i=1;i<=r;i++)
for(int j=1;j<=c;j++){
cin>>A[i][j];
f[i][j]=1;
}
int ans=0;
for(int i=1;i<=r;i++)
for(int j=1;j<=c;j++)
ans=max(ans,dfs(i,j));
printf("%d\n",ans);
return 0;
}