• leetcode 面试题 17.22. 单词转换(DFS+回溯)


    • 题目描述
    • 思路分析
      这题回溯,先想出它的空间解是什么,这里空间解,其实就是给的原字符串到结束字符串中间的变形过程,那么就可以容易的画出一个解空间树,用深度搜索进行搜索,
      剪枝后,进入下一个维度,再进行搜索,最后到达出口即得到结束字符串时,将结果返回,放下脚本
    class Solution {
    public:
        bool judge(string& a,string& b)
        {
            if(a.size()!=b.size()) return false;
            int count=0;
            for(int i=0;i<a.size();i++)
            {
                if(a[i]!=b[i])
                {
                    count++;
                }
            }
            return count==1;
        }
        bool findres(string &curWord,string& endWord,vector<string>& wordList,vector<bool> &visit,vector<string>& result)
        {
            if(curWord==endWord) return true;
            for(int i=0;i<wordList.size();i++)
            {
                if(visit[i]||!judge(curWord,wordList[i])) continue;
                visit[i]=true;
                result.push_back(wordList[i]);
                if(findres(wordList[i],endWord,wordList,visit,result)) return true;
                result.pop_back();
            }
            return false;
    
        }
        vector<string> findLadders(string beginWord, string endWord, vector<string>& wordList) {
            vector<string> result={beginWord};
            vector<bool> visit(wordList.size(),false);
            if(findres(beginWord,endWord,wordList,visit,result))
            {
                return result;
            }
            return vector<string>();
                
        }
    };
    

    回溯法学习链接:https://blog.csdn.net/shinanhualiu/article/details/52016481

  • 相关阅读:
    typora 页内跳转
    shell脚本搭建redis集群
    Html
    python json模块
    jenkins 问题合集
    day05 每日一行
    day04 每次一行
    day03 每日一行
    day02
    day02 每日一行
  • 原文地址:https://www.cnblogs.com/YenKoc/p/14334586.html
Copyright © 2020-2023  润新知