zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    多线程实践
    sql你server,mysql,oracle的分页语句
    BS与CS的联系与区别
    EJB与JAVA BEAN的区别
    Struts2.0 xml文件的配置(package,namespace,action)
    Q 51~60
    Q 41~50
    列表推导式
    Q 31~40
    Q 21~30
  • 原文地址:https://www.cnblogs.com/YenKoc/p/14334586.html
Copyright © 2011-2022 走看看