-77の特別なバックトラックLeetcode。組成物(組み合わせ)

-77の特別なバックトラックLeetcode。組成物(組み合わせ)


 

二つの整数を考える  のn  と  kのリターンは。1 ...、  nは 可能なすべての  k個の  組み合わせの数。

例:

入力:N = 4、K = 2 
出力
  [ [2,4]、
  [3,4]、
  [2,3]、
  [1,2]、
  [1,3]、
  [1,4]、
]




分析:この質問はバックか線に沿う取得し、非常に簡単です。

ACコード:
クラスのソリューション{ 
    リスト <リスト<Integer型>> ANS = 新しい ArrayListを<> ();
    公衆リスト<リスト<整数>>組み合わせる(整数 nは、INTのK){
         場合(N <= 0 || K <= 0 || N < K){
             戻りANS。
        } 
        
        DFS(N、K、 1、新しいスタック<整数> ()); 
        
        戻るANSを。
    } 
    
    
    公共 ボイド DFS(int型のn、int型の kは、int型今、スタック<整数> S){
         場合(s.size()== k)は{
            ans.add(新しいのArrayList <Integer型> (S));
            返します
        } 

        のためにint型私は今=私++; iが<= N ){ 
            s.add(I)。
            DFS(N、K、(I +1 )、S)。
            s.pop(); 
        } 
        
    } 
    
}

 



 

おすすめ

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