回溯算法
该算法解决存在多种结果的题型
框架
function backtrac(...){
触发选择条件
for 选择 in 选择列表:
删除不满足条件的选择
做选择
backtrac(...)
撤销选择
var dic=["","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"]
function letterCombinations(digits){
if(!digits){
return []
}
var res=[] //不能设置为全局变量
var tmp=""
backtrac(res,tmp,digits,0)
return res
}
function backtrac(res,tmp,digits){
//触发选择条件
if(tmp.length==digits.length){
res.push(tmp)
return
}
var index=digits[tmp.length]
var letter=dic[index] //第一次取出abc
// for选择条件in选择条件列表
for(var i=0;i<letter.length;i++){
//删除不满足条件的选择
//做选择
tmp=tmp+letter[i]
//backtrac
backtrac(res,tmp,digits)
//撤销选择
tmp=tmp.substr(0,tmp.length-1)
}
}

浙公网安备 33010602011771号