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;}