깊은 검색 leetcode의 결합 합

그리고 모두의 합은 K의 수 n의 조합을 찾을 수 있습니다. 구성은 1-- (9) 양의 정수를 포함 할 수 있으며, 반복 수는 각각의 조합에 존재하지 않습니다.

설명 :

모든 숫자는 양의 정수이다.
솔루션 세트는 그 중복 조합을 포함 할 수 없습니다. 
예 1 :

입력 : K = 3, N = 7
출력 : [2,4]
실시 예 2 :

입력 : K = 3, N = 9
출력 : [1,2,6], [1,3,5], [2,3,4]

출처 : 유지 버튼 (LeetCode)
링크 : https://leetcode-cn.com/problems/combination-sum-iii

아이디어 : 분석 여러 파라미터 DFS 합 반드시 필요한 수의 개수의 열거 함수 내의 첫번째 숫자 다음 재귀 제 번호 목록의 개수 (K)까지 응답 만족하는 조건이 추가되면, 이후 시간 라인에 순차 열거 열거 순서를 결정하도록이 반복 될 수 없으며, 이는 1 + 2 + 4, 4 + 1 + 2가 존재 방지되므로 시작점 열거하는 파라미터를 전달하는 것이 필요하다.

class Solution {
public:
    vector<vector<int>> ans;
    vector<int> path;
    vector<vector<int>> combinationSum3(int k, int n) {
        dfs(k,n,1);
        return ans;
    }
    void dfs(int k,int n,int start)
    {
        if(!k){
            if(!n)ans.push_back(path);
            return;
        }
//k个数,需要剩下的数有K个数,9-i+1>=k,则i<=10-k
        for(int i=start;i<=10-k;++i){
            if(n>=i){//只有n>=i的时候才能加进去
                path.push_back(i);
                dfs(k-1,n-i,i+1);
                path.pop_back();
            }
        }
    }
};

추천

출처www.cnblogs.com/clear-love/p/11363291.html