poj 1088滑雪 记忆化搜索
来源:互联网 发布:超次元矩阵什么职业好 编辑:程序博客网 时间:2024/06/05 20:01
#include<cstdio>#include<iostream>#include<algorithm>using namespace std;const int N=102;int s[N][N];int map[N][N];int inf=-0xffffff;int ds[4][2]={0,1,1,0,0,-1,-1,0};int n,m;int judge(int a,int b){ if(a>=1&&a<=n&&b>=1&&b<=m) return 1; return 0;}int dfs(int x,int y){ int xx,yy; if(s[x][y]) return s[x][y]; for(int i=0;i<4;i++) { xx=x+ds[i][0]; yy=y+ds[i][1]; if(judge(xx,yy)&&map[x][y]>map[xx][yy]&&dfs(xx,yy)+1>s[x][y]) s[x][y]=dfs(xx,yy)+1; } if(s[x][y]==0) return 1; return s[x][y];}int main(){ cin>>n>>m; memset(s,0,sizeof(s)); for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) cin>>map[i][j]; for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) if(dfs(i,j)>inf) inf=dfs(i,j); cout<<inf<<endl; system("pause"); return 0;}