在一个牛群中,每头牛都有一个编号,编号由小写字母组成,长度相同。牛群中的每头牛都有一个目标编号,当牛群中的一头牛移动到一个新的位置时,它的编号会发生改变,每次移动只能改变一个字母。现在给定一个表示牛群初始状态的编号 beginWord,一个表示牛群最终目标状态的编号 endWord,以及一个包含所有可能的编号序列的字典 wordList。请找出从 beginWord 到 endWord 的最短移动序列中的编号数目。如果不存在这样的移动序列,返回 0。

区块链毕设网qklbishe.com为您提供问题的解答

在一个牛群中,每头牛都有一个编号,编号由小写字母组成,长度相同。牛群中的每头牛都有一个目标编号,当牛群中的一头牛移动到一个新的位置时,它的编号会发生改变,每次移动只能改变一个字母。现在给定一个表示牛群初始状态的编号 beginWord,一个表示牛群最终目标状态的编号 endWord,以及一个包含所有可能的编号序列的字典 wordList。请找出从 beginWord 到 endWord 的最短移动序列中的编号数目。如果不存在这样的移动序列,返回 0。

哈希+广度优先搜索
#include <string> #include <vector> class Solution { public:     /**      * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可      *      *       * @param beginWord string字符串       * @param endWord string字符串       * @param wordList string字符串vector       * @return int整型      */          // 检测两个字符串有多少个不同的字符     bool check(string str_1, string str_2)     {         if(str_1.size()!=str_2.size())             return false;                  int len = str_1.size();         int res = 0;         for(int i=0; i<len; ++i)         {             if(str_1[i]!=str_2[i])                 ++res;         }          return res==1;     }      int ladderLength(string beginWord, string endWord, vector<string>& wordList) {         // write code here          // 哈希 + 广度优先搜索         unordered_set<string> u_s(wordList.begin(),wordList.end());          if(u_s.count(endWord)==0)             return 0;          // 将u_s中与beginWord一样的字符串删除         if(u_s.count(beginWord))             u_s.erase(beginWord);          queue<string> q;         q.emplace(beginWord);          while(!q.empty())         {             int len = q.size();             ++ans;              for(int i=0; i<len; ++i)             {                 string str= q.front();                 q.pop();                                  if(str==endWord)                     return ans;                                      // 从字典中找到与q.front()一字之差的字符串                 for(auto it=u_s.begin(); it!=u_s.end(); )                 {                     if(check(str, *it))                     {                         // 这里修改一下                         q.emplace(*it);                         it = u_s.erase(it);                         // q.emplace(*it);                         // // u_s中删除这个字符串,避免重复利用                         // u_s.erase(it);                         // // 这里需要将it重新定义为u_s.begin(),否则产生段错误,it都被删了哪还有it                         // it = u_s.begin();                         // continue;                     }                     else                         ++it;                 }             }         }          return 0;     }  private:     int ans = 0; };

14:24

以上就是关于问题在一个牛群中,每头牛都有一个编号,编号由小写字母组成,长度相同。牛群中的每头牛都有一个目标编号,当牛群中的一头牛移动到一个新的位置时,它的编号会发生改变,每次移动只能改变一个字母。现在给定一个表示牛群初始状态的编号 beginWord,一个表示牛群最终目标状态的编号 endWord,以及一个包含所有可能的编号序列的字典 wordList。请找出从 beginWord 到 endWord 的最短移动序列中的编号数目。如果不存在这样的移动序列,返回 0。的答案

欢迎关注区块链毕设网-
专业区块链毕业设计成品源码,定制。

区块链NFT链游项目方科学家脚本开发培训

从业7年-专注一级市场


微信:btc9767
TELEGRAM :https://t.me/btcok9

具体资料介绍

web3的一级市场千万收益的逻辑


进群点我



qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台-javagopython毕设 » 在一个牛群中,每头牛都有一个编号,编号由小写字母组成,长度相同。牛群中的每头牛都有一个目标编号,当牛群中的一头牛移动到一个新的位置时,它的编号会发生改变,每次移动只能改变一个字母。现在给定一个表示牛群初始状态的编号 beginWord,一个表示牛群最终目标状态的编号 endWord,以及一个包含所有可能的编号序列的字典 wordList。请找出从 beginWord 到 endWord 的最短移动序列中的编号数目。如果不存在这样的移动序列,返回 0。