回溯

回溯

🌼 思想 回溯算法的本质是通过递归的方法,枚举所有可能的解,找到满足条件的解。所以也叫做回溯搜索法。

🪜 解题步骤

var backtrack = function (path,选择列表) {
    if (path 满足条件) {
        result.push(path)
        return
    }
    if (满足减枝条件){
        return
    }//减枝
    for (var i = 0; i < 选择列表.length; i++) {
        path.push(选择列表[i])
        backtrack(path,新的选择列表)
        path.pop()
    }
}

📓 题目和解析

给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。

给你一个字符串 s,请你将 s 分割成一些 子串,使每个子串都是 回文串 。返回 s 所有可能的分割方案。