zoukankan      html  css  js  c++  java
  • 18.滑雪 记忆化搜索

     

     

    按照第一步往哪滑分

    分成四类

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 const int N = 310;
     4 int h[N][N]; //h表示每个点的高度 
     5 int f[N][N]; //动态规划数组 
     6 int n, m;
     7 int dx[4] = {-1, 0, 1, 0};
     8 int dy[4] = {0, 1, 0, -1}; //四个方向
     9 int dp(int x, int y) { //dp(i, j)是求出这个状态然后返回
    10     int &v = f[x][y]; //引用 
    11     if (v != -1) { //表示已经被算过了 
    12         return v;
    13     }
    14     v = 1; //最差最差可以走当前这一个点 
    15     for (int i = 0; i < 4; i++) {
    16         int a = x + dx[i];
    17         int b = y + dy[i];
    18         if(a >= 1 && a <= n && b >= 1 && b <= m && h[a][b] < h[x][y]) {
    19             v = max(v, dp(a, b) + 1);
    20         }
    21     }
    22     return v;
    23 }
    24 int main() {
    25     cin >> n >> m;
    26     for (int i = 1; i <= n; i++) {
    27         for (int j = 1; j <= m; j++) {
    28             cin >> h[i][j];
    29         }
    30     }
    31     memset(f, -1, sizeof f); //表示每个状态都没有被算过 
    32     int res = -1; //最大值 
    33     for (int i = 1; i <= n; i++) {
    34         for (int j = 1; j <= m; j++) {
    35             res = max(res, dp(i, j));
    36         }
    37     }
    38     cout << res << endl;
    39     return 0;
    40 }
  • 相关阅读:
    js-数组的原型拓展
    java-单例模式的java连接池
    java-基本数据类型值范围
    rabbitmq
    从哪跌倒从哪爬起,千里之行始于足下
    create python project steps
    常用代码片段
    shell脚本常用(记)
    shell学习
    maven工具使用
  • 原文地址:https://www.cnblogs.com/fx1998/p/12837478.html
Copyright © 2011-2022 走看看