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

浙公网安备 33010602011771号