poj-1088-滑雪-记忆化搜索

poj-1088-滑雪
考察点 记忆化搜索

#include<iostream>
#include<cmath>
#include<algorithm>
#include<cstring> 
using namespace std;
int dp[101][101];
int n,m;
int value[101][101]; 
int dfs(int x,int y)
{
    if(dp[x][y]!=-1)
{
    return dp[x][y];
}
int a=1,b=1,c=1,d=1;
if((x-1)>=0)
{
    if(value[x][y]>value[x-1][y])
    {
        a=dfs(x-1,y)+1;
    }
}
if((x+1)<n)
{
    if(value[x][y]>value[x+1][y])
    {
        b=dfs(x+1,y)+1;
    }
}
if((y-1)>=0)
{
    if(value[x][y]>value[x][y-1])
    {
        c=dfs(x,y-1)+1;
    }
}
if((y+1)<m)
{
    if(value[x][y]>value[x][y+1])
    {
        d=dfs(x,y+1)+1;
    }
}
int t=max(a,b);
t=max(t,c);
t=max(t,d);
dp[x][y]=t;
return t;//返回的是以i,j为开始最长的数字 
}
int main()
{
    cin>>n>>m;
    memset(dp,-1,sizeof(dp));
    for(int i=0;i<n;i++)
    for(int j=0;j<m;j++)
    cin>>value[i][j];
    int ma=-1;
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<m;j++)
        {
            ma=max(ma,dfs(i,j));
        }
    } 
    cout<<ma;
    return 0;
} 
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容