牛客网2017滴滴出行校招真题:地下迷宫(广度优先搜索)

1.地下迷宫解题
  • 题目戳链接
  • 题目有两个点需要注意:
    • 小青蛙向不同方向走所消耗体力不同(向上3,向下0,向左或向右1)
    • 判断是否能逃离迷宫,并且要求输出消耗体力最少的路径
  • 这里我使用广搜的思想来实现
  • 为了能在遍历过程中监测体力消耗情况和记录路径,我维护了两个队列:
    • 一个队列用于记录路径,便于最后输出最佳路径
    • 另一个队列用于记录需要访问的点,并记录了到达该点后剩余的体力值以及是从该点的哪个方向来到该点的(防止回溯导致内存溢出)
  • 下面是我实现的代码,占用内存480k,运行时间4ms(也可以戳我的github
#include<iostream>
#include<queue>
#include<vector>
#include<string>

using namespace std;

void ShowPath(const vector<pair<int, int>>& path)
{
    int len=path.size();
    for(int i=0; i<len-1; i++){
        cout<<"["<<path[i].first<<","<<path[i].second<<"],";
    }
    cout<<"["<<path[len-1].first<<","<<path[len-1].second<<"]";
}

int up=3;
int down=0;
int horizon=1;

in
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值