回溯算法

该算法解决存在多种结果的题型

框架

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)
    }
}
posted @ 2020-01-14 16:37  终相守  阅读(64)  评论(0)    收藏  举报