POJ 1008 滑雪 记忆化搜索
http://poj.org/problem?id=1088
题意:略
了解下记忆化搜索
没时间了 先贴个代码,明天详解
代码:
#include<iostream> #include<cstring> #include<string> #include<cstdio> #define Max(a,b)a>b?a:b using namespace std; int a[102][102],f[102][102]; int dir[4][2]={0,-1,-1,0,0,1,1,0}; int r,c,ans; int dfs(int x,int y) { int k,XX,YY; if(f[x][y]>1) return f[x][y]; for(k=0;k<4;k++) { XX=x+dir[k][0]; YY=y+dir[k][1]; if(XX<0||XX>=r||YY<0||YY>=c||a[x][y]<=a[XX][YY])continue; int t=dfs(XX,YY); if(t>=f[x][y]) f[x][y]=t+1; } return f[x][y]; } int main() { int i,j; scanf("%d%d",&r,&c); for(i=0;i<r;i++) for(j=0;j<c;j++) { scanf("%d",&a[i][j]); f[i][j]=1; } int ans=0; for(i=0;i<r;i++) for(j=0;j<c;j++) { int t=dfs(i,j); ans=Max(ans,t); } printf("%d\n",ans); return 0; }