Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【BFS最短路】迷宫中离入口最近的出口 / 最小基因变化 / 单词接龙 / 为高尔夫比赛砍树

【BFS最短路】迷宫中离入口最近的出口 / 最小基因变化 / 单词接龙 / 为高尔夫比赛砍树

作者头像
_小羊_
发布于 2025-04-09 00:43:33
发布于 2025-04-09 00:43:33
6300
代码可运行
举报
文章被收录于专栏:C++C++
运行总次数:0
代码可运行

迷宫中离入口最近的出口

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Solution {
public:
    int nearestExit(vector<vector<char>>& maze, vector<int>& entrance) {
        int dx[4] = {1, -1, 0, 0}, dy[4] = {0, 0, 1, -1};
        bool used[101][101] = {};
        int m = maze.size(), n = maze[0].size(), step = 0;
        queue<pair<int, int>> q;
        int row = entrance[0], col = entrance[1];
        q.push({row, col});
        used[row][col] = true;
        while (q.size())
        {
            step++; // 向外扩展一层
            int sz = q.size();
            while (sz--) 
            {
                auto [a, b] = q.front();
                q.pop();
                for (int i = 0; i < 4; i++)
                {
                    int x = a + dx[i], y = b + dy[i];
                    if (x >= 0 && x < m && y >= 0 && y < n && maze[x][y] == '.' 
                        && !used[x][y])
                    {
                        if (x == 0 || x == m - 1 || y == 0 || y == n - 1) return step;
                        used[x][y] = true;
                        q.push({x, y});
                    }
                }
            }
        }
        return -1;
    }
};

最小基因变化

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Solution {
public:
    int minMutation(string startGene, string endGene, vector<string>& bank) {
        unordered_set<string> hash(bank.begin(), bank.end());
        unordered_set<string> used;
        const string str = "ACGT";

        if (startGene == endGene) return 0;
        if (!hash.count(endGene)) return -1;

        queue<string> q;
        q.push(startGene);
        used.insert(startGene);
        int step = 0;
        while (q.size())
        {
            step++;
            int sz = q.size();
            while (sz--)
            {
                string s = q.front();
                q.pop();
                for (int i = 0; i < 8; i++)
                {
                    string tmp = s;
                    for (int j = 0; j < 4; j++)
                    {
                        tmp[i] = str[j];
                        if (tmp == endGene) return step;
                        if (hash.count(tmp) && !used.count(tmp))
                        {
                            used.insert(tmp);
                            q.push(tmp);
                        }
                    }
                }
            }
        }
        return -1;
    }
};

单词接龙

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Solution {
public:
    int ladderLength(string beginWord, string endWord, vector<string>& wordList) {
        unordered_set<string> hash(wordList.begin(), wordList.end());
        unordered_set<string> used;
        queue<string> q;
        if (!hash.count(endWord)) return 0;
        q.push(beginWord);
        used.insert(beginWord);
        int ret = 1; // 最初beginWord也算一个单词
        while (q.size())
        {
            ret++;
            int sz = q.size();
            while (sz--)
            {
                string str = q.front();
                q.pop();
                for (int i = 0; i < beginWord.size(); i++)
                {
                    string tmp(str);
                    for (char ch = 'a'; ch <= 'z'; ch++)
                    {
                        tmp[i] = ch;
                        if (tmp == endWord) return ret;
                        if (hash.count(tmp) && !used.count(tmp))
                        {
                            used.insert(tmp);
                            q.push(tmp);
                        }
                    }
                }
            }
        }
        return 0;
    }
};

为高尔夫比赛砍树

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Solution {
    int dx[4] = {1, -1, 0, 0}, dy[4] = {0, 0, 1, -1};
    int m, n, ret = 0;
public:
    int cutOffTree(vector<vector<int>>& forest) {
        m = forest.size(), n = forest[0].size();
        map<int, pair<int, int>> hash;
        for (int i = 0; i < m; i++)
            for (int j = 0; j < n; j++)
                if (forest[i][j] > 1)
                    hash[forest[i][j]] = {i, j};
        int bx = 0, by = 0;
        for (auto &[a, b] : hash)
        {
            int step = bfs(forest, bx, by, b.first, b.second);
            if (step == -1) return -1;
            ret += step;
            bx = b.first;
            by = b.second;
        }
        return ret;
    }
    int bfs(vector<vector<int>>& forest, int bx, int by, int ex, int ey)
    {
        if (bx == ex && by == ey) return 0;
        int ret = 0;
        queue<pair<int, int>> q;
        bool used[51][51] = {};
        q.push({bx, by});
        used[bx][by] = true;
        while (q.size())
        {
            ret++;
            int sz = q.size();
            while (sz--)
            {
                auto [a, b] = q.front();
                q.pop();
                for (int i = 0; i < 4; i++)
                {
                    int x = a + dx[i], y = b + dy[i];
                    if (x == ex && y == ey) return ret;
                    if (x >= 0 && x < m && y >= 0 && y < n && forest[x][y] && !used[x][y])
                    {
                        used[x][y] = true;
                        q.push({x, y});
                    }
                }
            }
        }
        return -1;
    }
};
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Solution {
    int dx[4] = {1, -1, 0, 0}, dy[4] = {0, 0, 1, -1};
    int m, n, ret = 0;
public:
    int cutOffTree(vector<vector<int>>& f) {
        m = f.size(), n = f[0].size();
        vector<pair<int, int>> trees;
        for (int i = 0; i < m; i++)
            for (int j = 0; j < n; j++)
                if (f[i][j] > 1) 
                    trees.push_back({i, j});
        sort(trees.begin(), trees.end(), 
            [&f](const pair<int, int>& p1, const pair<int, int>& p2)
            { return f[p1.first][p1.second] < f[p2.first][p2.second];});
        
        int bx = 0, by = 0;
        for (auto [a, b] : trees)
        {
            int step = bfs(f, bx, by, a, b);
            if (step == -1) return -1;
            ret += step;
            bx = a, by = b;
        }
        return ret;
    }
    int bfs(vector<vector<int>>& f, int bx, int by, int ex, int ey)
    {
        // 处理边界情况
        if (bx == ex && by == ey) return 0;
        queue<pair<int, int>> q;
        bool used[51][51] = {};
        q.push({bx, by});
        used[bx][by] = true;
        int ret = 0;
        while (q.size())
        {
            ret++;
            int sz = q.size();
            while (sz--)
            {
                auto [a, b] = q.front();
                q.pop();
                for (int i = 0; i < 4; i++)
                {
                    int x = a + dx[i], y = b + dy[i];
                    if (x == ex && y == ey) return ret;
                    if (x < 0 || x >= m || y < 0 || y >= n || !f[x][y] || used[x][y])
                        continue;
                    used[x][y] = true;
                    q.push({x, y});
                }
            }
        }
        return -1;
    }
};

本篇文章的分享就到这里了,如果您觉得在本文有所收获,还请留下您的三连支持哦~

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-04-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Echarts分段折线图图例样式visualMap颜色修改
王小婷
2025/05/19
1200
Echarts分段折线图图例样式visualMap颜色修改
Echarts柱状图折线图混合使用
前面用到的更多的是单个统计图,有些统计图里面,使用柱状图折线图混合使用的,下面写的是用ajax+json本地模拟数据,发送请求,渲染出一个柱状图折线图混合图表。
王小婷
2025/05/19
920
Echarts柱状图折线图混合使用
【前端统计图】echart多条折线图ajax请求json数据
关于echart折线图,用到的地方和场景也很多,昨天写的demo,基础之上可以继续扩展,今天的demo是echart多条折线图ajax请求json数据。
王小婷
2019/07/18
2K0
【前端统计图】echart多条折线图ajax请求json数据
ajax+json实现echarts多个统计图显示
前端时常会遇到这样的问题,有一个单独的模块用作统计图,将多个折线或者柱状图,混合使用,下面的例子是用ajax+json模拟了调用接口实现echarts多个统计图显示。 样式布局暂时就不放在上面了,以下是从项目里面复制过来的一个小的demo,代码仅供参考。
王小婷
2019/09/19
2.7K0
Echarts网格颜色渐变 + 折线图折线发光高亮效果
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/01
1.6K0
Echarts网格颜色渐变 + 折线图折线发光高亮效果
Echarts统计图标题居中显示
title: { text: '健康人数统计', // subtext:'', x: 'center', y: '7px', textStyle: { color: '#3A7BD5',
王小婷
2020/11/24
4.3K0
Echarts统计图标题居中显示
Echarts折线图表断点如何补全
Echarts折线图如何补全断点以及如何隐藏断点的title   做报表的时候,尤其是做图表的时候时常会碰到某一记录的值中缺少某个时间段(比如月份或季度)的值,导致图表显示残缺不全,for examp
上帝
2018/05/18
1.8K0
欧拉计划——方阵中的最大乘积
08 02 22 97 38 15 00 40 00 75 04 05 07 78 52 12 50 77 91 08 49 49 99 40 17 81 18 57 60 87 17 40 98 43 69 48 04 56 62 00 81 49 31 73 55 79 14 29 93 71 40 67 53 88 30 03 49 13 36 65 52 70 95 23 04 60 11 42 69 24 68 56 01 32 56 71 37 02 36 91 22 31 16 71 51 67 63 89 41 92 36 54 22 40 40 28 66 33 13 80 24 47 32 60 99 03 45 02 44 75 33 53 78 36 84 20 35 17 12 50 32 98 81 28 64 23 67 10 26 38 40 67 59 54 70 66 18 38 64 70 67 26 20 68 02 62 12 20 95 63 94 39 63 08 40 91 66 49 94 21 24 55 58 05 66 73 99 26 97 17 78 78 96 83 14 88 34 89 63 72 21 36 23 09 75 00 76 44 20 45 35 14 00 61 33 97 34 31 33 95 78 17 53 28 22 75 31 67 15 94 03 80 04 62 16 14 09 53 56 92 16 39 05 42 96 35 31 47 55 58 88 24 00 17 54 24 36 29 85 57 86 56 00 48 35 71 89 07 05 44 44 37 44 60 21 58 51 54 17 58 19 80 81 68 05 94 47 69 28 73 92 13 86 52 17 77 04 89 55 40 04 52 08 83 97 35 99 16 07 97 57 32 16 26 26 79 33 27 98 66 88 36 68 87 57 62 20 72 03 46 33 67 46 55 12 32 63 93 53 69 04 42 16 73 38 25 39 11 24 94 72 18 08 46 29 32 40 62 76 36 20 69 36 41 72 30 23 88 34 62 99 69 82 67 59 85 74 04 36 16 20 73 35 29 78 31 90 01 74 31 49 71 48 86 81 16 23 57 05 54 01 70 54 71 83 51 54 69 16 92 33 48 61 43 52 01 89 19 67 48
lop
2019/03/13
5810
欧拉计划 Problem11
题目: 方阵中的最大乘积 在如下的20×20方阵中,有四个呈对角线排列的数被标红了。
Max超
2019/01/21
4230
SSH攻击ip列表【不定时更新】
  有时我们的linux主机经常被ssh攻击,主要是密码爆破,ytkah通过查看centos登录记录发现一个异常ip是112.85.42.181,搜索了相关资料发现已经有人也碰到类似情况,以下是收集的SSH攻击IP列表,有遇到相同问题的朋友建议屏蔽下列ip
ytkah
2020/09/01
3.2K7
【前端统计图】echart折线图ajax请求json数据
先上图,写了一个echart折线图ajax请求json数据的小demo,帮助自己更好的理解图表知识。
王小婷
2019/07/16
1.4K0
【前端统计图】echart折线图ajax请求json数据
国密curl的用法指南
cURL(客户端URL)是一个开放源代码的命令行工具,用来请求 Web和其他各种类型的服务器。curl有着大量的参数,常用来测试/调试服务器的开发和排查等,堪称一个网络“神器”。
用户8941398
2022/07/20
1.1K0
国密curl的用法指南
[ffffffff0x] 文件结构概述:PNG格式
在CTF比赛中,常见各种文件的隐写题目。而图片格式,常见的题目类型有LSB隐写、图片尺寸篡改、jphide隐写等。本文将介绍PNG的文件结构内容,辅助解决CTF中遇到的图片隐写问题。
r0fus0d
2021/01/06
2.3K0
[ffffffff0x] 文件结构概述:PNG格式
Some Ways To Create An Interactive Shell On Windows
在Twitter看到一种在windows下反弹cmd shell的方法,其实重点不在于反弹shell,而在于这种文件写入的方法可以运用到某些场景中会很方便,比如RCE没有回显时,就可以通过写入一个反弹功能的可执行文件获取到shell,但是你是如何写入该文件的?当然你可能会通过echo一个有下载功能vbs脚本,远程下载该可执行文件,或者powershell,或者bitsadmin,或者certutil,那么这里再介绍给你一种方法将可执行文件直接echo进去! PS:如果小伙伴们还有好的方法可以交流一下! Cr
风流
2018/06/07
5240
休闲娱乐|手把手教你在Python中使用turtle模块实现二次元少女(二)代码部分1
六月暴雪飞梨花
2024/04/07
4530
休闲娱乐|手把手教你在Python中使用turtle模块实现二次元少女(二)代码部分1
echarts关系图
交一个读破万卷书邪士,不如交一个不识一字端人——金缨 案例地址:https://echarts.apache.org/examples/zh/editor.html?c=graph&version
阿超
2022/09/29
1.9K1
echarts关系图
Echarts多Y轴探索
ECharts,一个纯 Javascript 的图表库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Firefox,Safari等),底层依赖轻量级的 Canvas 类库 ZRender,提供直观,生动,可交互,可高度个性化定制的数据可视化图表。
孟君
2019/09/24
5K0
Echarts多Y轴探索
这个折线图,惊艳到我了!
展现多个系列的数据,一般习惯使用柱状图或折线图。本文使用个人比较喜爱的Pyecharts库,绘制呈现多个系列数据的普通折现图(line chart)、堆叠图(stack chart)、面积堆叠图(stack area chart)。
double
2021/12/15
1.2K0
这个折线图,惊艳到我了!
【数据可视化】Echarts中的其它图表
上次提到了【数据可视化】Echarts最常用图表,其中还有一些图需要了解,这次来分享一下。
zxctscl
2024/03/21
3750
【数据可视化】Echarts中的其它图表
纯CSS显示JS/HTML等源代码行数
CSS方法实现的优缺点 优点: 简单,高效,性能十足,即使代码变来变去布局也OK。
泽泽社长
2023/04/17
5740
相关推荐
Echarts分段折线图图例样式visualMap颜色修改
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验