poj 1088 滑雪【记忆化搜索】

来源:互联网 发布:solidworks能编程吗 编辑:程序博客网 时间:2024/06/02 05:44

题目链接:http://poj.org/problem?id=1088

基础题,不讲了,饿了 吃早饭去。。。

代码:

#include <stdio.h>#include <iostream>#include <algorithm>#include <string.h>#include <queue>#include <math.h>#include <map>#include <string>using namespace std;int r,c;int a[110][110],dp[110][110];int dfs(int i,int j){    if(dp[i][j]!=0) return dp[i][j];    dp[i][j]=1;    if(a[i][j] > a[i+1][j] && i<r)        dp[i][j] = max(dp[i][j],dfs(i+1,j)+1);    if(a[i][j] > a[i][j+1] && j<c)        dp[i][j] = max(dp[i][j],dfs(i,j+1)+1);    if(a[i][j] > a[i-1][j] && i>1)        dp[i][j] = max(dp[i][j],dfs(i-1,j)+1);    if(a[i][j] > a[i][j-1] && j>1)        dp[i][j] = max(dp[i][j],dfs(i,j-1)+1);    return dp[i][j];}int main(){    while(cin>>r>>c)    {        memset(a,0,sizeof(a));        memset(dp,0,sizeof(dp));        for(int i=1;i<=r;i++)            for(int j=1;j<=c;j++)            cin>>a[i][j];        int ans = -1;         for(int i=1;i<=r;i++)            for(int j=1;j<=c;j++)                ans = max(ans,dfs(i,j));            printf("%d\n",ans);    }    return 0;}
0 0
原创粉丝点击