zoukankan      html  css  js  c++  java
  • poj1088(记忆化搜索入门题)

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

    思路:

    明显的记忆化搜索题,用dp[i][j]表示从(i,j)出发能滑的最远距离,用dfs搜索,若dp[x][y]>0即已经计算过,直接返回值即可,否则按照dfs思路递推计算其最大值,递推式为:

    dp[x][y]=max(dp[x][y],dfs(xx,yy)+1)((xx,yy)与(x,y)相邻,且a[xx][yy]<a[x][y])。详见代码:

     1 #include<cstdio>
     2 #include<algorithm>
     3 using namespace std;
     4 
     5 int r,c,res;
     6 int a[105][105],dp[105][105];
     7 int go[4][2]={-1,0,0,1,1,0,0,-1};
     8 
     9 int dfs(int x,int y){
    10     if(dp[x][y]>0) return dp[x][y];
    11     dp[x][y]=1;
    12     for(int i=0;i<4;++i){
    13         int xx=x+go[i][0],yy=y+go[i][1];
    14         if(xx>=0&&xx<r&&yy>=0&&yy<c&&a[xx][yy]<a[x][y])
    15             dp[x][y]=max(dp[x][y],dfs(xx,yy)+1);
    16     }
    17     return dp[x][y];
    18 }
    19 
    20 int main(){
    21     scanf("%d%d",&r,&c);
    22     for(int i=0;i<r;++i)
    23         for(int j=0;j<c;++j)
    24             scanf("%d",&a[i][j]);
    25     for(int i=0;i<r;++i)
    26         for(int j=0;j<c;++j){
    27             int tmp=dfs(i,j);
    28             if(tmp>res) res=tmp;
    29         }
    30     printf("%d
    ",res);
    31     return 0;            
    32 }
  • 相关阅读:
    svg
    vuex的模块
    es6的新增方法和es5数组的一些方法
    vue的响应规则
    简单的解构赋值
    vuex的四种状态
    indexDB
    token验证
    C# 委托与事件的DEMO
    WPF MVVM 键盘按键事件绑定
  • 原文地址:https://www.cnblogs.com/FrankChen831X/p/10435120.html
Copyright © 2011-2022 走看看