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

题目前置知识

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

考研算法44天:玛雅人的密码_第1张图片

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

题目原题

考研算法44天:玛雅人的密码_第2张图片

解题思路

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

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

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

考研算法44天:玛雅人的密码_第3张图片我们一层一层向下搜索,直到搜到那个满足条件的字符串返回就是了。

  //比较其他字符串是否包含“2012”,若包含直接返回
        for(i=0;i

AC代码

#include 
#include 
#include 
#include 
using namespace std;

int n;

int BFS(string str){
    queue q;
    //用来存储从根串变化到其他串需要的步数,以及由根串变化而来的其他串。
    unordered_map dist;
    q.push(str);
    dist[str] = 0;
    int i;
    while(q.size()){
        string r = q.front();
        q.pop();
        
        //比较其他字符串是否包含“2012”,若包含直接返回
        for(i=0;i>n>>str;
    cout<

你可能感兴趣的:(算法)