Leetcode 216. 조합 총 III

1359 단어 Leetcode
n의 k개수를 합친 모든 조합을 찾아라.조합에는 1-9의 정수만 허용되며 각 조합에는 중복된 숫자가 없습니다.
설명:
  • 모든 숫자가 정수..
  • 해집은 중복된 조합을 포함할 수 없다. 

  • 예 1:
     : k = 3, n = 7
     : [[1,2,4]]
    

    예 2:
     : k = 3, n = 9
     : [[1,2,6], [1,3,5], [2,3,4]]

     

    기본적인 사고방식: 이렇게 모든 출력 가능한 상황을 직접 귀속시키고 싶지 않다.


    어떻게 해야만 귀속할 수 있습니까?간단하다. 한 수에 대해 두 가지 선택을 하려면 두 가지 방식으로 귀속시키면 된다.
     
    class Solution {
    public:
    	vector> Res;
    	vector> combinationSum3(int k, int n) {
    		int N = n / k;
    		vector Temp;
    		_combinationSum3(k, n, Temp, 1);
    		return Res;
    	}
    
    	/*** k   n ,Now_P , 1 ,2,3,4,……  */
    	void _combinationSum3(int k, int n, vector Temp, int Now_P) {
    		int Sum = 0;
    		for (int n : Temp) Sum += n;
    
    		/** if   ,  **/
    		if (Temp.size() == k - 1 && Sum + Now_P == n) {
    			Temp.push_back(Now_P);
    			Res.push_back(Temp);
    			return;
    		}
    		/** if   ,  **/
    		else {
    			if (Sum + Now_P>n || Now_P>n|| Now_P>=9)
    				return;
    			_combinationSum3(k, n, Temp, Now_P + 1); //  
    			Temp.push_back(Now_P);
    			_combinationSum3(k, n, Temp, Now_P + 1); //  
    		}
    	}
    };

    좋은 웹페이지 즐겨찾기