1. 程式人生 > >17. Letter Combinations of a Phone Number C++回溯法

17. Letter Combinations of a Phone Number C++回溯法

簡單的回溯法!

class Solution {
public:
    void backTrack(string digits, vector<string> words, string ans, vector<string>& res, int k, int flag[])
    {
        if(k == digits.size())
        {
            res.push_back(ans);
        }
        else
        {
            for(int i=0; i<words[(int
)(digits.at(k))-(int)'0'].size(); i++) { string t = ans; ans.push_back(words[(int)(digits.at(k))-(int)'0'].at(i)); backTrack(digits,words,ans,res,k+1,flag); ans = t;//也可以直接ans.pop_back(),而不使用中間變數t } } } vector
<string> letterCombinations(string digits) { string ans; int flag[4] = {0,};//0為未用過 vector<string> words = {"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"}; vector<string> res; if(digits == "") return res; backTrack(digits,words,ans,res,
0,flag); return res; } };