考研算法44天:玛雅人的密码

news2024/11/26 4:11:15

题目前置知识

1.为啥BFS比DFS更加适合找最短路径?

BFS 的使用场景:层序遍历、最短路径问题 - 知乎 (zhihu.com) 

题目原题

解题思路

这道题和原先写的那些题目不同的是,这次BFS所搜索的树里面存放的是一个字符串,也就是说没有路径一说,我们需要一个map来存不同的字符串自身和自己从根字符串变来的步数。

    queue<string> q;
    //用来存储从根串变化到其他串需要的步数,以及由根串变化而来的其他串。
    unordered_map<string,int> dist;

画个图出来也就是这样的(以题目中给的提示中的例子来解释一下):

我们一层一层向下搜索,直到搜到那个满足条件的字符串返回就是了。

  //比较其他字符串是否包含“2012”,若包含直接返回
        for(i=0;i<n-3;i++){
            if(r.substr(i,4) == "2012"){
                // cout<<" r:"<<r<<" dist[r]:"<<dist[r]<<endl;
                return dist[r];
            }
        }

AC代码

#include <iostream>
#include <cstring>
#include <queue>
#include <unordered_map>
using namespace std;

int n;

int BFS(string str){
    queue<string> q;
    //用来存储从根串变化到其他串需要的步数,以及由根串变化而来的其他串。
    unordered_map<string,int> dist;
    q.push(str);
    dist[str] = 0;
    int i;
    while(q.size()){
        string r = q.front();
        q.pop();
        
        //比较其他字符串是否包含“2012”,若包含直接返回
        for(i=0;i<n-3;i++){
            if(r.substr(i,4) == "2012"){
                // cout<<" r:"<<r<<" dist[r]:"<<dist[r]<<endl;
                return dist[r];
            }
        }
        
        //遍历交换,将由上一层某一节点
        //变化而来的字符串都放入队列q中(不重复存放)
        for(i=1;i<n;i++){
            string o = r;
            swap(o[i],o[i-1]);
            if(!dist.count(o)){
               dist[o] = dist[r] + 1;
            //   cout<<"o:"<<o<<" r:"<<r<<" dist[r]:"<<dist[r]<<endl;
               //(不重复存放)
               q.push(o);
            }
        }
    }
    //没找到返回-1
    return -1;
}

int main(){
    string str;
    cin>>n>>str;
    cout<<BFS(str)<<endl;
    return 0;
}

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

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

相关文章

SQL server中substring 的用法

一&#xff1a;substring函数是SQL中截取字段数据中的其中一部分 --列&#xff1a;提取abdcsef中的abc数据&#xff0c;使用substring实现select substring(abdcsef,1,3) --‘1’表示截取的起始位置是从第一个字符开始,‘3’表示截取后得到的字符串长度为3个字符 二&#xff1…

day7 ADC模数转换

ADC简介 作用&#xff1a;采集传感器的数据&#xff0c;测量输入电压&#xff0c;检查电池电量剩余&#xff0c;检测温湿度等。 ADC性能指标 量程&#xff1a;能测量的电压范围 分辨率&#xff1a;ADC的分辨率通常以二进制数的位数表示&#xff0c;位数越多&#xff0c;分辨…

腾讯面试题:使用Redis分布式锁可能会出现哪些问题?

嗨大家好&#xff0c;我是你们的小米&#xff01;今天要和大家聊一个有趣的话题&#xff0c;那就是“腾讯面试题&#xff1a;使用Redis做分布式锁可能会出现哪些问题&#xff1f;”没错&#xff0c;就是腾讯大佬们在面试时经常会问到的一个问题&#xff0c;我们来一起深入了解一…

ubuntu中安装python

最简单方便的是 apt 使用第三方的 ppa 源&#xff0c;然后直接 apt 安装 python3.9 安装 software-properties-common 获取add-apt-repository命令&#xff1a;apt install -y software-properties-common添加第三方的 ppa 源&#xff1a;add-apt-repository ppa:deadsnakes/p…

【下班神器】python写自动关机程序并打包成exe文件

前言 嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! 不知道你们有没有过这种体验&#xff0c;下班时给电脑关机结果误点成重启&#xff0c; 又或者工作到还剩十几分钟快要下班了&#xff0c;老板突然说要开会。 会议结束后&#xff0c;还要等到电脑关机才能回家。 是不是就…

SQL- 每日一题【1327. 列出指定时间段内所有的下单产品】

题目 表: Products 表: Orders 写一个解决方案&#xff0c;要求获取在 2020 年 2 月份下单的数量不少于 100 的产品的名字和数目。 返回结果表单的 顺序无要求 。 查询结果的格式如下。 示例 1: 解题思路 1.题目要求我们获取在 2020 年 2 月份下单的数量不少于 100 的产品的…

录取查询系统自己怎么做?需要用到哪些技术?

作为一名老师&#xff0c;我深知学生及家长们对于录取情况的关注和期待。因此&#xff0c;学校公布录取情况表是非常重要的一项工作。在这篇文章中&#xff0c;我将分享学校公布录取情况表的步骤和流程&#xff0c;帮助大家更好地了解录取情况。 学校在录取过程结束后&#xf…

百日筑基篇——Pandas学习三(pyhton入门八)

百日筑基篇——Pandas学习三&#xff08;pyhton入门八&#xff09; 文章目录 前言一、数据排序二、字符串处理三、数据合并方法1. merge方法2. concat方法 四、分组数据统计五、数据重塑1. stack2. pivot 总结 前言 上一篇文章介绍了一下pandas库中的一些函数&#xff0c;而本…

pmp通过率都97%,只要考都能过?还有啥价值?

PMP 的通过率确实挺高的&#xff0c;网传培训机构的通过率高达 97%&#xff0c;但是每年考PMP 的人不减反增&#xff0c;大家可以想一下&#xff0c;这是为什么&#xff1f; 一、先给大家分析一下现在 PMP 的使用场景 1、项目管理岗位招聘的门槛 PMP 是项目管理领域的一个权…

湖仓一体:国产基础软件的创新突破与弯道超车

在这个市场变化和技术演进的时期&#xff0c;传统的国内外巨头优势被减弱&#xff0c;具备创新技术的国产基础软件企业&#xff0c;有希望实现弯道超车。 随着数字化转型进程的加快&#xff0c;企业对于数据基础设施的存储和计算能力要求越来越高。如何进行数据资产的统一管理和…

杨立昆:挺过“神经网络寒冬”,人工智能实现大突破

原创 | 文 BFT机器人 01 “卷积网络之父”杨立昆谈人工智能 今年GPT爆火以后&#xff0c;杨立昆化身“杠精”。从提出“GPT系统将很快被抛弃”的观点&#xff0c;到回怼特斯拉创始人马斯克“延缓大模型研究和开发是一种新的模糊主义&#xff0c;没有任何意义”&#xff0c;杨立…

Stable Diffusion + AnimateDiff运用

1.安装AnimateDiff&#xff0c;重启webui 2.下载对应的模型&#xff0c;最好到c站下载&#xff0c;google colab的资源有可能会出现下载问题 https://civitai.com/models/108836 3.下载完成后&#xff0c;你可以随便抽卡了。 抽卡完成后固定seed&#xff0c;然后打开这个插件&…

虹科分享 | 什么是软件组成分析?

软件组成分析&#xff08;SCA&#xff09;应用程序安全测试(AST)工具市场的一个细分市场&#xff0c;负责管理开源组件的使用。SCA工具自动扫描应用程序的代码库&#xff0c;包括容器和注册表等相关构件&#xff0c;以识别所有开源组件、它们的许可证遵从性数据和任何安全漏洞。…

Leetcode39 组合总和

给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target &#xff0c;找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 &#xff0c;并以列表形式返回。你可以按 任意顺序 返回这些组合。 candidates 中的 同一个 数字可以 无限制重复被选取 。如果…

EndNote 21 for Mac(文献管理软件) v21.0.1中文版

EndNoter mac是一款参考文献管理软件&#xff0c;旨在帮助学术研究者、学生和专业人士有效地管理和引用参考文献。该软件提供了许多功能&#xff0c;使用户可以轻松地组织、搜索和引用各种类型的文献。 EndNoter mac软件特点和功能 1. 参考文献管理&#xff1a;EndNoter允许用…

各位请看:如何使用ChatGPT让你的小生意做得更好?

​在当前快节奏的商业环境中&#xff0c;有许多小型企业依靠行动效率和创造力正在茁壮成长。OpenAI的ChatGPT这样的AI工具正为小型企业发展作出贡献。 ChatGPT是基于OpenAI语言模型架构GPT-3.5和GPT-4的人工智能聊天机器人。它根据大量的互联网文本数据集预测句子中的下一个单词…

小鹏G9高压电驱动800V拆解【实拍】

目前已知G9基于800V 电池系统和Sic电驱系统进行开发。但这一系统的具体参数、技术水平都尚无官方解析。这里基于欣旺达的sfc480电池发布会ppt资料(图1)&#xff0c;可以看出欣旺达的4c电池满电电压在4.4V&#xff0c;这和taycan 4S的800v系统最大电压基本相同&#xff0c;电池系…

03-基础入门-搭建安全拓展

基础入门-搭建安全拓展 1、涉及的知识点2、常见的问题3、web权限的设置4、演示案例-环境搭建&#xff08;1&#xff09;PHPinfo&#xff08;2&#xff09;wordpress&#xff08;3&#xff09;win7虚拟机上使用iis搭建网站&#xff08;4&#xff09;Windows Server 2003配置WEB站…

Jmeter性能测试系列-性能测试需求分析

性能测试需求分析 性能测试需求分析与传统的功能测试需求有所不同&#xff0c;功能测试需求分析重点在于从用户层面分析被测对象的功能性、易用性等质量特性&#xff0c;性能测试则需要从终端用户应用、系统架构设计、硬件配置等多个纬度分析系统可能存在性能瓶颈的业务。 性…

搭建网站并内网穿透实现公网访问本地SQL Server数据库【无公网IP内网穿透】

文章目录 前言1. 安装网站运行和发布必备软件2. 安装PHPStudy3. 安装wordpress4. 进入wordpress安装程序&#xff0c;进行网页编辑和设置5. 安装URL插件6. 安装Cpolar7. 创建自己的数据隧道 前言 在普通电脑用户看来&#xff0c;建立自己的网站总是一件高大上的事情&#xff0…