特別-216のバックトラッキングLeetcode。テーマ-39をバックトラックの全組成物III(組合せ合計III)Leetcode法。合計バックトラックの特別Leetcode(組合せ合計)-40組成物。全組成物II(組合せ合計II)

-216の特殊なバックトラックLeetcode。全組成物III(組合せ合計III)

同様のトピック:

-39の主題後戻りLeetcode。組み合わせの総数(組み合わせ合計)

-40の特別なバックトラックLeetcode。全組成物II(組合せ合計II)


 

 

そして、すべての合計を見つける  のn の  k個の 組み合わせの数を組成物は、1-- 9の正の整数を含んでいてもよい、及び反復数は、各組合せには存在しません。

説明:

  • すべての数値は正の整数です。
  • ソリューションセットは、重複の組み合わせを含めることはできません。 

例1:

入力:K = 3、N- = 7。
出力:[[2,4]]

例2:

入力:K = 3、。N- = 9。
出力:[[1,2,6]、[1,3,5]、[2,3,4]


分析:
アップグレードの前に二つの質問、リンク記事の冒頭の前に二つの質問があります。

kの数を取って、1-9を求めて、Kとnが与えられ、nにそれらを許します。

同様に、バックトラック、得られる二分岐に分割して撮影していない、プラスと判断ならびに採取数の決意にされます。

クラスのソリューション{ 
    
    リスト <リスト<Integer型>> ANS = 新しい ArrayListを<> ();
    公衆リスト<リスト<整数>> combinationSum3(int型 K、int型N){
         もし(K == 0 || N == 0)リターンANS。
        DFS(K、N、 1、新規のArrayList <整数>()、0 );
        戻るANSを。
    } 
    公共 ボイド DFS(INT K、整数 nは、整数、ステップ、のArrayList <整数>リスト、int型の合計){
         場合(はlist.size()== K &&和== N){
            ans.add(新しい ArrayListを<> リスト))。
            返します
        } 
        であれば(ステップ> 9)に戻り
        
        
        
        list.add(ステップ)。
        DFS(K、N、ステップ + 1、リスト、和+ ステップ)。
        list.remove(はlist.size() -1 )。
        DFS(K、N、ステップ +1 、リスト、合計)。
    } 
}

 

おすすめ

転載: www.cnblogs.com/qinyuguan/p/11330214.html