zoukankan      html  css  js  c++  java
  • SHOI2002 滑雪:记忆化搜索(本质是动态规划)

    记忆化搜索可行的关键点在于求解过程的无后效性,比如本题中要求下滑轨迹必须是连续单调下降的路径,所以高位置的解只与低位置的解有关,因此满足无后效性。

     1 #include<stdio.h>
     2 #include<string.h>
     3 #include<algorithm>
     4 #define maxn 105
     5 using namespace std;
     6 int dx[4]={0,0,1,-1};
     7 int dy[4]={1,-1,0,0};
     8 int R,C;
     9 int h[maxn][maxn],s[maxn][maxn];
    10 
    11 void dfs(int x, int y){
    12     if (s[x][y]) return;
    13     s[x][y]=1;
    14     for (int k=0; k<4; k++){
    15         int tx=x+dx[k], ty=y+dy[k];
    16         if (!(tx>=1 && tx<=R &&ty>=1 &&ty<=C && h[tx][ty]<h[x][y])) continue;
    17         dfs(tx,ty);
    18         s[x][y]=max(s[x][y],s[tx][ty]+1);
    19     }
    20 }
    21 
    22 int main(){
    23     scanf("%d%d", &R, &C);
    24     for (int i=1; i<=R; i++)
    25         for (int j=1; j<=C; j++){
    26             scanf("%d", &h[i][j]);
    27             s[i][j]=0;
    28         }
    29     int ans=0; 
    30     for (int i=1; i<=R; i++){
    31         for (int j=1; j<=C; j++){
    32             dfs(i,j);
    33             ans=max(ans,s[i][j]);
    34         }
    35     }
    36     printf("%d
    ", ans);
    37     return 0;
    38 }
  • 相关阅读:
    Android Native Hook技术(一)
    Android Native Hook技术(二)
    Dalvik源码阅读笔记(一)
    Dalvik源码阅读笔记(二)
    Android反调试笔记
    /dev/mem可没那么简单
    jenkins使用邮件功能
    docker 安装 oracle
    jstack
    docker network
  • 原文地址:https://www.cnblogs.com/mzl0707/p/13229203.html
Copyright © 2011-2022 走看看