一. 动态规划 :

  1. 思路 :这道题用动规来解决其实很简单,f[i][j]表示一共按了i次按钮到达了第j层,初始化f[0][s] = 1表示走0步就能到起点,最后答案在f[i][e]中(i是步数,枚举1 ~ n,从中找最小的来做i)表示走了i步到达了终点。状态转移方程是if(f[i - 1][j]) f[i][j + q[i]] = 1; f[i][j - q[i]] = 1;
  2. code :
     1 #include <bits/stdc++.h>
    2 #define INF 0x3f3f3f3f
    3 using namespace std;
    4 int n, q[1001], f[1001][1001], s, e;
    5 signed main()
    6 {
    7 scanf("%d %d %d", &n, &s, &e);
    8 for(register int i = 1; i <= n; ++i)
    9 {
    10 scanf("%d", &q[i]);
    11 }
    12 f[0][s] = 1;
    13 for(register int i = 1; i <= n; ++i)
    14 {
    15 for(register int j = 1; j <= n; ++j)
    16 {
    17 if(f[i - 1][j])
    18 {
    19 if(j + q[j] <= n)//记得判边界
    20 {
    21 f[i][j + q[j]] = 1;
    22 }
    23 if(j - q[j] >= 1)
    24 {
    25 f[i][j - q[j]] = 1;
    26 }
    27 }
    28 }
    29 }
    30 for(register int i = 0; i <= n; ++i)
    31 {
    32 if(f[i][e])
    33 {
    34 printf("%d", i);
    35 return 0;
    36 }
    37 }
    38 printf("-1");
    39 return 0;
    40 }

   二. 广搜 :

  1. 思路 :没啥特别的,直接从起点开始搜(向上搜,向下搜),f[i]表示从起点到i的最小步数
  2. code :
     #include <bits/stdc++.h>
    #define INF 0x3f3f3f3f
    using namespace std;
    int u[] = {, -};//向上 + 向下
    int n, s, e, q[], f[];
    struct node
    {
    int x, dis;//当前元素和从起点到x的距离
    };
    inline void bfs()//开搜
    {
    memset(f, INF, sizeof(f));
    queue < node > pru;
    pru.push(node{s, });
    f[s] = ;
    while(!pru.empty())
    {
    node p = pru.front();
    pru.pop();
    for(register int i = ; i < ; ++i)
    {
    int nx = p.x + q[p.x] * u[i];
    if(nx >= && nx <= n && f[nx] > p.dis + )
    {
    f[nx] = p.dis + ;
    pru.push(node{nx, f[nx]});
    }
    }
    }
    return;
    }
    signed main()
    {
    scanf("%d %d %d", &n, &s, &e);
    for(register int i = ; i <= n; ++i)
    {
    scanf("%d", &q[i]);
    }
    bfs();
    if(f[e] == INF)//搜不到
    {
    printf("-1");
    }
    else
    {
    printf("%d", f[e]);
    }
    return ;
    }

洛谷 P1135 【奇怪的电梯】的更多相关文章

  1. 【DFS与BFS】洛谷 P1135 奇怪的电梯

    题目:奇怪的电梯 - 洛谷 (luogu.com.cn) 因为此题数据范围较小,有dfs及bfs等多种做法. DFS 比较正常的dfs,注意vis数组一定要回溯,不然会漏情况 例如这个数据 11 1 ...

  2. 洛谷 P1135 奇怪的电梯 【基础BFS】

    题目链接:https://www.luogu.org/problemnew/show/P1135 题目描述 呵呵,有一天我做了一个梦,梦见了一种很奇怪的电梯.大楼的每一层楼都可以停电梯,而且第 i 层 ...

  3. TYVJ P3522 &&洛谷 P1135 奇怪的电梯 Label:bfs

    题目描述 呵呵,有一天我做了一个梦,梦见了一种很奇怪的电梯.大楼的每一层楼都可以停电梯,而且第i层楼(1<=i<=N)上有一个数字Ki(0<=Ki<=N).电梯只有四个按钮:开 ...

  4. 洛谷 P1135 奇怪的电梯

    题目描述 呵呵,有一天我做了一个梦,梦见了一种很奇怪的电梯.大楼的每一层楼都可以停电梯,而且第i层楼(1<=i<=N)上有一个数字Ki(0<=Ki<=N).电梯只有四个按钮:开 ...

  5. 洛谷P1135 奇怪的电梯

    题目描述 呵呵,有一天我做了一个梦,梦见了一种很奇怪的电梯.大楼的每一层楼都可以停电梯,而且第i层楼 (1<=i<=N)上有一个数字Ki(0<=Ki<=N).电梯只有四个按钮: ...

  6. 洛谷 P1135 奇怪的电梯 (dfs)

    题目描述 呵呵,有一天我做了一个梦,梦见了一种很奇怪的电梯.大楼的每一层楼都可以停电梯,而且第i层楼(1<=i<=N)上有一个数字Ki(0<=Ki<=N).电梯只有四个按钮:开 ...

  7. 洛谷P1135 奇怪的电梯【bfs】

    题目:https://www.luogu.org/problemnew/show/P1135 题意: 一共有n层楼,在第i层可以往上或往下$k_i$层. 问从$a$层到$b$层至少需要多少乘多少次电梯 ...

  8. 洛谷P1135 奇怪的电梯 BFS例题

    好,这是一道黄题.几个月前(2017.10.29)的我拿了可怜的20分. 这是当年的蒟蒻代码 #include <cstdio> #include <iostream> #in ...

  9. 洛谷 P1135 奇怪的电梯 (DFS)

    题意:有一\(n\)层高的大楼,每层楼都只能在合法情况下上\(x\)层或者下\(x\)层,问你是否能从\(a\)层楼坐电梯到\(b\)层楼,输出最小步数. 题解:直接dfs搜,\(flo\)表示层数, ...

  10. 集训作业 洛谷P1135 奇怪的电梯

    这个题我见过!!! 我之前在石油大学的网站上做练习赛,提高了很多,这个题是我第一次在比赛里见到深搜. 当时蒙蔽的一批,现在发现好简单…… 这个题和普通的深搜没什么区别,甚至可以说简单了,因为这个是1维 ...

随机推荐

  1. vue+ elementUI 打包发布到服务器后,element-icons.woff文件404

    vue项目打包部署到服务器,静态资源文件404 js文件404问题        原因:打包的项目静态资源的路径需要设置为绝对路径.如果是相对路径会出错 解决办法:修改config/index.js文 ...

  2. CoreCLR Host源码分析(C++)

    废话不多说,直接上源码: 1.在托管程序集里面执行方法 HRESULT CorHost2::ExecuteAssembly(DWORD dwAppDomainId,//通过CreateAppDomai ...

  3. JAVA-基础-数据类型转换

    一.类型的转换 java中数据具有类型.这些类型是可以相互进行转换的. 1.自动类型转换 六个和数字相关的基本类型,可以自动由小到大进行类型转换.但是反过来就不行. *注意,在整形自动转浮点型时,有可 ...

  4. SQL和NoSQL的区别

    一.概念 SQL (Structured Query Language) 数据库,指关系型数据库.主要代表:SQL Server,Oracle,MySQL(开源),PostgreSQL(开源). No ...

  5. Canvas动画(PC端 移动端)

    Canvas动画(PC端 移动端) 一,介绍与需求 1.1,介绍 canvas是HTML5中新增一个HTML5标签与操作canvas的javascript API,它可以实现在网页中完成动态的2D与3 ...

  6. eclipse导入码云-GIT项目

    1.首先找到项目源码地址我随便找到一个git地址 :https://gitee.com/mingSoft/MCMS 2.打开eclipse空白处右键导入项目搜索git. 3.将第一步复制的git地址复 ...

  7. Vue 中使用 typescript

    Vue 中使用 typescript 什么是typescript typescript 为 javaScript的超集,这意味着它支持所有都JavaScript都语法.它很像JavaScript都强类 ...

  8. springboot整合websocket原生版

    目录 HTTP缺点 HTTP websocket区别 websocket原理 使用场景 springboot整合websocket 环境准备 客户端连接 加入战队 微信公众号 主题 HTTP请求用于我 ...

  9. Markdown转载

    @TOC 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页.如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown ...

  10. 重读《学习JavaScript数据结构与算法-第三版》- 第3章 数组(一)

    定场诗 大将生来胆气豪,腰横秋水雁翎刀. 风吹鼍鼓山河动,电闪旌旗日月高. 天上麒麟原有种,穴中蝼蚁岂能逃. 太平待诏归来日,朕与先生解战袍. 此处应该有掌声... 前言 读<学习JavaScr ...