【DFS】LeetCode 17. 전화번호의 알파벳 조합

여기에 이미지 설명 삽입

헤일로 뿌아입니다. 보통은 주로 C언어, C++, 자료구조 알고리즘 업데이트... 관심있으신 분들은 저를 팔로우 해주세요!
이미지

주제:

여기에 이미지 설명 삽입

예:

여기에 이미지 설명 삽입

답변:

이것은 전체 배열 문제입니다. 먼저 예제를 살펴보겠습니다.

첫 번째 예시 보기: "abc"와 "de"에 해당하는 "23"을 입력합니다 . 전체 배열의 특성에 따라 먼저 계층 구조로 작성한 다음 순차적으로 배열하고 결합합니다.

구체적으로:

먼저 0번째 레이어("abc") 중 하나를 선택한 다음, 첫 번째 레이어("de") 중 하나를 선택합니다. 이때 두 번째 레이어에 도달합니다. 이때 레이어 수는 크기와 같습니다. 입력된 "23"의 ()는 현재 순열이 끝났음을 나타내며 답을 저장하고 이전 레이어로 돌아가 다음 순열을 계속합니다.여기에 이미지 설명 삽입

구체적인 코드 구현을 살펴보겠습니다.

암호:

#include<iostream>
#include<vector>
using namespace std;
class Solution {
    
    
public:
    string a[10]={
    
    "","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"}; 
    void conbinStr(string digits,int level,string combine,vector<string>&v)
    {
    
    
        if(level==digits.size())
        {
    
    
            v.push_back(combine);
            return ;
        }
        int num=digits[level]-'0';
        string str=a[num];

        for(int i=0;i<str.size();i++)
        {
    
    
            conbinStr(digits,level+1,combine+str[i],v);
        }
    }
    vector<string> letterCombinations(string digits) {
    
    
        vector<string>ans;
        if(digits.size()==0)
        {
    
    
            return ans;
        }
        conbinStr(digits,0,"",ans);
        return ans;
    }
};
  1. 먼저 전체 아이디어를 명확히 하고 심층 검색 을 수행해야 하지만 letterCombinations의 매개 변수 가 요구 사항 충족 할 수 없으므로 기능 사용자 정의해야 합니다 . , v ( 답변 배열 ), 각 버튼의 문자에 해당하는 문자열을 정의합니다.

  2. 그 후 층류 호출을 시작합니다.
    여기에 이미지 설명 삽입

Supongo que te gusta

Origin blog.csdn.net/qq_62839589/article/details/131738720
Recomendado
Clasificación