青蛙跳杯子【蓝桥杯】/bfs

news2024/11/17 14:41:56

青蛙跳杯子

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

bfs

思路:刚开始用的是dfs,但是不太行,DFS 可能会导致搜索深度过深,增加了时间复杂度,BFS 适合求解最短路径问题,BFS 在搜索过程中,首先访问距离初始节点最近的节点,因此可以保证找到的路径是最短的,所以应该选择bfs。
本题可以以*为切入点,来进行跳跃

#include<iostream>
#include<cmath>
#include<queue>
#include<algorithm>
#include<cstring>
#include<map>
using namespace std;
typedef long long ll;
string s1,s2;
//需要用这个来存储一个串如果已经被访问过就不用再跳了,不然会重复很多
map<string,bool> m;
ll bfs(int n)
{
    queue<pair<string,ll>> q;
    q.push({s1,0});
    while(!q.empty())
    {
        string s=q.front().first;
        //代表步数
        ll num=q.front().second;
        q.pop();
        if(s==s2) return num;
        if(m[s]) continue;
        m[s]=1;
        int idx=s.find('*');
        string temp;
        //交换左边第一个
        if(idx>0)
        {
            temp=s;
            swap(temp[idx],temp[idx-1]);
            q.push({temp,num+1});
        }
        //交换左边第二个
        if(idx>1)
        {
            temp=s;
            swap(temp[idx],temp[idx-2]);
            q.push({temp,num+1});
        }
        //交换左边第三个
        if(idx>2)
        {
            temp=s;
            swap(temp[idx],temp[idx-3]);
            q.push({temp,num+1});
        }
        //交换右边第一个
        if(idx<n-1)
        {
            temp=s;
            swap(temp[idx],temp[idx+1]);
            q.push({temp,num+1});
        }
        //交换右边第二个
        if(idx<n-2)
        {
            temp=s;
            swap(temp[idx],temp[idx+2]);
            q.push({temp,num+1});
        }
        //交换右边第三个
        if(idx<n-3)
        {
            temp=s;
            swap(temp[idx],temp[idx+3]);
            q.push({temp,num+1});
        }
    }
    return -1;
}
int main()
{
    cin>>s1>>s2;
    int n=s1.size();
    cout<<bfs(n)<<endl;
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1574663.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于VUE的电影交流平台的设计与实现

摘 要 伴随着信息科技和互联网科技的迅猛发展&#xff0c;人们的消费重心随着生活水平的提高逐渐地转移到了精神层次&#xff0c;而电影则是其中之一。以前电影交流采用面对面交流的方法&#xff0c;局限了电影讨论交流的范围和方式。本系统是一个基于VUE框架&#xff0c;使用…

Peter算法小课堂—线性dp

今天&#xff0c;你读完这篇文章&#xff0c;普及组的动态规划已经可以秒了。 最长公共子序列 求两个数列的最长公共子序列&#xff08;Longest Common Subsequence&#xff0c;LCS&#xff09;的长度。 数列 X 和 Y 的最长公共子序列 Z&#xff0c;是指 Z 既是 X 的子序列&…

在实体类中使用JSONObject对象

有时候我们的业务需求可能字段是json格式&#xff0c;这个时候我们的实体类就对应的也应该是json格式&#xff0c;需要使用到JSONObject这个对象&#xff0c;但是可能会使用不了这个对象&#xff0c;那接下来我将简单介绍如何使用这个对象。 以下为我的实体类中的某个字段&…

leetcode.707. 设计链表

题目 题意&#xff1a; 在链表类中实现这些功能&#xff1a; get(index)&#xff1a;获取链表中第 index 个节点的值。如果索引无效&#xff0c;则返回-1。 addAtHead(val)&#xff1a;在链表的第一个元素之前添加一个值为 val 的节点。插入后&#xff0c;新节点将成为链表的…

乐健体育刷分----AI运动的站姿风车

一.前情提要 1.本文仅作学习参考不得用于其他不当途径&#xff0c;若有问题后果自负 二.操作 1.打开乐健体育 2.点击AI运动&#xff0c;找到站姿风车 3.摄像头对准以下图片&#xff0c;拖动图片或保持不动均可 &#xff08;站姿风车2组及以上效果更佳&#xff09;

unity学习(82)——profiler 限制帧率

实际测试发现当玩家个数增加时&#xff0c;客户端明显变的很卡&#xff0c;想知道为什么变卡了&#xff01; 1.只有玩家自己的时候 2.两个时候感觉脚本的工作量增大了 拖了一会直接炸了&#xff01;&#xff08;数据包积压把内存搞炸&#xff0c;我第一次见&#xff09; 3.我觉…

MySQL复制拓扑2

文章目录 主要内容一.配置基本复制结构1.分别在三台主机上停止mysqld服务&#xff0c;并对状态进行确认&#xff1a;代码如下&#xff08;示例&#xff09;: 2.对三个MySQL服务器的配置文件分别进行编辑&#xff0c;在[mysqld] 选项组中添加以下红色条目&#xff1a;3.在数据目…

金融中的数学模型

平稳时间序列 时间序列的基本统计特性&#xff0c;如均值、方差和自相关等&#xff0c;在时间上不随时间的推移而发生显著的变化。 平稳时间序列通常具有以下特征&#xff1a; 均值不随时间变化&#xff1a;序列的均值在时间上保持恒定。方差不随时间变化&#xff1a;序列的…

Mysql密码修改问题

docker安装mysql&#xff0c;直接拉取镜像&#xff0c;挂载关键目录即可启动&#xff0c;默认3306端口。此时无法直接连接&#xff0c;需要配置密码。docker进入mysql容器中 docker exec -it mysql bash #mysq是容器名称&#xff0c;也可以用容器id通过修改mysql的配置进行免密…

FJSP:霸王龙优化算法(Tyrannosaurus optimization,TROA)求解柔性作业车间调度问题(FJSP),提供MATLAB代码

一、柔性作业车间调度问题 柔性作业车间调度问题&#xff08;Flexible Job Shop Scheduling Problem&#xff0c;FJSP&#xff09;&#xff0c;是一种经典的组合优化问题。在FJSP问题中&#xff0c;有多个作业需要在多个机器上进行加工&#xff0c;每个作业由一系列工序组成&a…

【数据结构与算法】力扣 19. 删除链表的倒数第 N 个结点

题目描述 给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 示例 1&#xff1a; 输入&#xff1a; head [1,2,3,4,5], n 2 输出&#xff1a; [1,2,3,5]示例 2&#xff1a; 输入&#xff1a; head [1], n 1 输出&#xff1a; []示例…

说说TCP为什么需要三次握手和四次挥手?

一、三次握手 三次握手&#xff08;Three-way Handshake&#xff09;其实就是指建立一个TCP连接时&#xff0c;需要客户端和服务器总共发送3个包 主要作用就是为了确认双方的接收能力和发送能力是否正常、指定自己的初始化序列号为后面的可靠性传送做准备 过程如下&#xff…

成为一个ATE工程师是什么体验?

当你成为ATE工程师&#xff0c;是什么感受&#xff1f; 按照业内资深工程师的玩笑话来说&#xff1a;整的是比劳斯莱斯还贵的设备&#xff0c;更高端的机台顶得起上海几套房。 1、什么是ATE测试&#xff1f; 一颗芯片的生命周期始于市场需求&#xff0c;从产品的定义与设计&…

nodejs应用程序以守护进程daemon的方式启动,容器化部署的时候一直部署出错,导致无法成功启动程序。

一、背景 nodejs应用程序使用Egg.js 框架脚本命令&#xff0c;见package.json&#xff1a; "scripts": {"debug": "egg-bin debug","clean": "easy clean","build": "easy build prod","start&…

【漏洞复现】爱数云盘 Usrm_GetAllUsers 未授权访问漏洞

0x01 产品简介 爱数云盘是一个为企业协作提供高效的文档办公服务的企业云盘&#xff0c;主要是做私有云文件管理服务。 0x02 漏洞概述 爱数 AnyShare存在未授权漏洞&#xff0c;未授权的攻击者可以通过该漏洞获取用户名信息。 0x03 测绘语句 fofa: app"AISHU-AnyShare…

vue2开发好还是vue3开发好vue3.0开发路线

Vue 2和Vue 3都是流行的前端框架&#xff0c;它们各自有一些特点和优势。选择Vue 2还是Vue 3进行开发&#xff0c;主要取决于你的项目需求、团队的技术栈、以及对新特性的需求等因素。以下是一些关于Vue 2和Vue 3的比较&#xff0c;帮助你做出决策&#xff1a; Vue 2&#xff1…

MPT - 初识账户状态树(World State)

往期回顾 ETH网络中的账户ETH网络中的区块链 通过以上文章&#xff0c;我们了解到ETH网络中的World State是节点根据交易维护的&#xff0c;节点在维护Wrold State时为了方便操作会将用户状态构建成一颗树&#xff0c;称为账户状态树&#xff0c;采用一种叫做MPT的数据结构 MP…

一带一路故事绘|亚的斯亚贝巴友谊广场的绿色变迁

这是2月18日在埃塞俄比亚首都亚的斯亚贝巴友谊广场拍摄的景色。 新华社记者 李亚辉 摄 一带一路故事绘&#xff5c;亚的斯亚贝巴友谊广场的绿色变迁 援埃塞俄比亚河岸绿色发展项目是中国政府援建的市政园林类项目&#xff0c;是落实中非合作论坛北京峰会“八大行动”倡议“绿…

Python基于深度学习的屋内烟雾检测系统的研究与实现,附源码

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…