그리고 모두의 합은 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();
}
}
}
};