[回溯算法]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实现)的主要内容,如果未能解决你的问题,请参考以下文章

[LeetCode] 17. 电话号码的字母组合(回溯)

Leetcode17. 电话号码的字母组合(HashMap+深搜回溯)

17. 电话号码的字母组合(递归+回溯)

17. 电话号码的字母组合(递归+回溯)

算法 ---- LeetCode回溯系列问题题解

算法 ---- LeetCode回溯系列问题题解