搜索:搜索+优先队列

STL工具:优先队列queue

题一:P1135 奇怪的电梯

题干简述:每层都有一个数字,选择向上或者向下,不能超过最高楼层也不能低于1层

输入:总层数N 起始楼层数A 目标楼层数B

每层的数字

输出:从A到达B最少需要按多少次电梯

分析:

  1. 使用pair数据类型,first记录当前层数,second记录到达当前层数按了多少次电梯

  1. 使用优先队列存放元素,每次考虑两种情况:上楼到达的层数,下楼到达的层数;将到达的层数放入优先队列

  1. 更新:向上/向下:将向上/向下后的楼层数存入q1,并加上操作次数q1(当前层数,操作次数)将q1入队

  1. 从队列中取出元素q2,判断所在楼层数,如果符合目标楼层则结束,如果不符合则进行向上或者向下操作:以q1作为中间变量进行存取参考步骤3;

题二:P1443 马的遍历

题干:有一个 n×m 的棋盘,在某个点 (x, y)上有一个马,要求你计算出马到达棋盘上任意一个点最少要走几步。

输入:n m x y;

输出:一个n×m 的矩阵,代表马到达某个点最少要走几步(不能到达则输出 -1)。

分析:

使用两个方向矩阵,用一个循环来对马进行操作,一共有八个方向,当符合条件时就将其放入优先队列且更新走到的位置所需要的步数;条件:该点没有走过||不超出边界

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值