回溯
🌼 思想 回溯算法的本质是通过递归的方法,枚举所有可能的解,找到满足条件的解。所以也叫做回溯搜索法。
🪜 解题步骤:
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 所有可能的分割方案。