zoukankan      html  css  js  c++  java
  • 记忆化搜索

    记忆化搜索:https://oi-wiki.org/dp/memo/

    一:滑雪

    给定一个R行C列的矩阵,表示一个矩形网格滑雪场。

    矩阵中第 i 行第 j 列的点表示滑雪场的第 i 行第 j 列区域的高度。

    一个人从滑雪场中的某个区域内出发,每次可以向上下左右任意一个方向滑动一个单位距离。

    当然,一个人能够滑动到某相邻区域的前提是该区域的高度低于自己目前所在区域的高度。

    下面给出一个矩阵作为例子:

     1  2  3  4 5
    
    16 17 18 19 6
    
    15 24 25 20 7
    
    14 23 22 21 8
    
    13 12 11 10 9
    

    在给定矩阵中,一条可行的滑行轨迹为24-17-2-1。

    在给定矩阵中,最长的滑行轨迹为25-24-23-…-3-2-1,沿途共经过25个区域。

    现在给定你一个二维矩阵表示滑雪场各区域的高度,请你找出在该滑雪场中能够完成的最长滑雪轨迹,并输出其长度(可经过最大区域数)。

    输入格式

    第一行包含两个整数R和C。

    接下来R行,每行包含C个整数,表示完整的二维矩阵。

    输出格式

    输出一个整数,表示可完成的最长滑雪长度。

    数据范围

    1R,C3001≤R,C≤300,
    0100000≤矩阵中整数≤10000

    输入样例:

    5 5
    1 2 3 4 5
    16 17 18 19 6
    15 24 25 20 7
    14 23 22 21 8
    13 12 11 10 9
    

    输出样例:

    25

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 
     4 const int N = 310;
     5 
     6 int g[N][N];
     7 int memo[N][N];
     8 int n, m;
     9 
    10 int dx[4] = {-1, 0, 1, 0}, dy[4] = {0, 1, 0, -1};
    11 
    12 int dfs(int x, int y){
    13     if(memo[x][y] != -1) return memo[x][y];
    14     int ans = 1;
    15     memo[x][y] = 1;
    16     for(int i = 0;i < 4;++i){
    17         int a = x + dx[i], b = y + dy[i];
    18         if(a >= 1 && a <= n && b >= 1 && b <= m && g[a][b] < g[x][y])
    19             ans = max(ans, dfs(a, b)+1);
    20     }
    21     return memo[x][y] = ans;
    22 }
    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 >> g[i][j];
    29     
    30     memset(memo, -1, sizeof memo);
    31     int ans = 0;
    32     for(int i = 1;i <= n;++i)
    33         for(int j = 1;j <= m;++j)
    34             ans = max(ans, dfs(i, j));
    35             
    36     cout << ans << endl;
    37     return 0;
    38 }
    View Code
  • 相关阅读:
    JS/jquery实现鼠标控制页面元素显隐
    【干货】十分钟读懂浏览器渲染流程
    【干货分享】程序员常访问的国外技术交流网站汇总
    jquery源码分析(七)——事件模块 event(二)
    jquery源码分析(五)——Deferred 延迟对象
    对于BFC(block format context)理解
    前端开发神器之chrome 综述
    重新认识面向对象
    DOMContentLoaded 与onload区别以及使用
    HTML5本地存储——Web SQL Database与indexedDB
  • 原文地址:https://www.cnblogs.com/sxq-study/p/12336036.html
Copyright © 2011-2022 走看看