day 25回溯(二)
2023-12-23 22:40:33
day25
代码随想录
2023.12.23
1. 216组合总和Ⅲ
这这道题跟昨天组合一样,只不过加了个条件罢了,思路还是一样的
class Solution {
public:
vector<vector<int>> result;
vector<int> temp;
vector<vector<int>> combinationSum3(int k, int n) {
backtravel(k,n,1);
return result;
}
void backtravel(int k, int n, int index){
if(temp.size()==k){
int sum=0;
for(int i=0;i<temp.size();i++){
sum += temp[i];
}
if(sum==n)
result.push_back(temp);
return;
}
for(int i=index;i<=9;i++){
temp.push_back(i);
backtravel(k,n,i+1);
temp.pop_back();
}
}
};
2. 17电话号码的字母组合
这道题开始看不懂,感觉很迷。首先要数字映射到字母,然后遍历字母,不断地递归。
class Solution {
public:
vector<string> result;
string temp;
const string letterMap[10] = {
"", // 0
"", // 1
"abc", // 2
"def", // 3
"ghi", // 4
"jkl", // 5
"mno", // 6
"pqrs", // 7
"tuv", // 8
"wxyz", // 9
};
void backtravel(string& dight, int index){
cout<<index;
cout<<dight.size()<<endl;
if(index==dight.size()){
cout<<temp<<endl;
result.push_back(temp);
return;
}
int dig = dight[index]-'0';
string s = letterMap[dig];
for(int i=0;i<s.size();i++){
temp.push_back(s[i]);
backtravel(dight,index+1);
temp.pop_back();
}
}
vector<string> letterCombinations(string digits) {
if (digits.size() == 0) {
return result;
}
backtravel(digits, 0);
return result;
}
};
文章来源:https://blog.csdn.net/qq_56913257/article/details/135166461
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!