[回溯算法]leetcode17. 电话号码的字母组合(c实现)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[回溯算法]leetcode17. 电话号码的字母组合(c实现)相关的知识,希望对你有一定的参考价值。
题目
代码
/**
* Note: The returned array must be malloced, assume caller calls free().
*/
char*path;
int pathTOP;
char**result;
int resultTOP;
char*letterMap[10]="","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz";
void backtracking(char *digits,int index)//index记录数字位置
int i=0;
//递归终止条件
if(index==strlen(digits))//纵向的递归次数与数字个数相同
char*temp=(char*)malloc(sizeof(char)*strlen(digits)+1);//+1 是因为字符串结尾以\\0
for(i=0;i<strlen(digits);i++)
temp[i]=path[i];
temp[strlen(digits)]= \\0;//最后的位置加上\\0
result[resultTOP++]=temp;
return ;
int digit=digits[index]-0;//digit代表真正的数字
char*letter=letterMap[digit];//letter代表数字所对应的字符串
for(i=0;i<strlen(letter);i++)
path[pathTOP++]=letter[i];
//递归
backtracking(digits,index+1);//index+1为下一个数字
//回溯
pathTOP--;
char ** letterCombinations(char * digits, int* returnSize)
path=(char*)malloc(sizeof(char)*strlen(digits));
result=(char*)malloc(sizeof(char*)*300);
*returnSize=0;
if(strlen(digits)==0)
return NULL;
pathTOP=0;
resultTOP=0;
backtracking(digits,0);
*returnSize=resultTOP;
return result;
#过程分析
1.图片演示
2.index的作用
3. -0的原因
4. 部分递归图
以上是关于[回溯算法]leetcode17. 电话号码的字母组合(c实现)的主要内容,如果未能解决你的问题,请参考以下文章