常见DFS题,好久没做了,有点生疏
dfs最常见的就是
dfs()
{
if(到达边界条件)
输出结果到答案
for(?;?;?)
{
给某全局变量赋值
dfs()
解除全局变量赋值
}
}
class Solution {
public:
string str[10]={" ","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
vector<string> ans;
string dfs_str;
void dfs(string digits,int k)
{
int num,str_len,len,i;
string now_s;
str_len=digits.length();
if(k==str_len) //若等于长度,则ans加一个字符串
{
ans.push_back(dfs_str);
return ;
}
num=digits[k]-'0';
now_s=str[num];
len=now_s.length();
for(i=0;i<len;i++)
{
dfs_str+=now_s[i]; //dfs_str加一个字符
dfs(digits,k+1);
dfs_str=dfs_str.substr(0,k); //减一个字符
}
}
vector<string> letterCombinations(string digits)
{
if(digits.size()==0)
return ans;
dfs(digits,0);
return ans;
}
};