您的位置:首页 > 其它

P1004 滑雪 tyvj

2016-05-21 19:30 477 查看
记忆化搜索

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int G[102][102],vis[102][102];
int r,c,maxn;
int dx[4]={0,1,0,-1};
int dy[4]={1,0,-1,0};

int dfs(int x,int y,int cnt);
int main(){
while(scanf("%d%d",&r,&c)!=EOF){
memset(vis,0,sizeof(vis));
maxn=0;
for(int i=0;i<r;i++){
for(int j=0;j<c;j++){
scanf("%d",&G[i][j]);
}
}
for(int i=0;i<r;i++){
for(int j=0;j<c;j++){
if(vis[i][j]!=0)continue;
dfs(i,j,1);
}
}
printf("%d\n",maxn);
}
return 0;
}

int dfs(int x,int y,int cnt){
if(cnt>vis[x][y]){
vis[x][y]=cnt;
if(maxn<cnt){
maxn=cnt;
}
}
else{
return 0;
}
for(int i=0;i<4;i++){
int nx=dx[i]+x,ny=dy[i]+y;
if(nx<0||ny<0||nx>=r||ny>=c) continue;
if(G[nx][ny]>G[x][y]){
dfs(nx,ny,cnt+1);
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: