78-子集

ユニークなNビットの2 ^ Nの数のサブセットは、サブセットの表現の総数は、ビット操作を使用して、2つ、です。例えば<< 1 3 = 1×2×2×2 = 8、それは1 << Nのように表すことができます。

注意点:ベクトル<整数> RES、直接ステートメントもしそうならない初期値と、[]このような形態である中空内部は、あるのでときに出力する出力の次のサイクル空集合

アイデア:1つの2 ^ Nサイクルを確立するために、各番号(バイナリ)が循環され、ビット演算&NUMSの各桁(1 << j)は、ビットは入力ベクトルに対応し、最終的な出力を行います外側のループの完全なサブセットはNUMSの全てのサブセットで完了する。

操作のポイントがあったとは思いませんでした、コード最適化、読みやすくは語りました。

クラス解決{
 パブリック
    ベクトル <ベクトル< INT >>サブセット(ベクトル< INT >&NUMS){ 
        
        ベクトル <ベクトル< INT >> RES。
        INT結果= nums.size()。
        整数 N = 1つの << 結果。
        INT iは= 0 ; I <N I ++ 
        { 
            ベクトル < INT > V。
            INT J = 0 ; J <結果、J ++ 
            {
                IF(I&(1 << J))                // 計算し、対応する場合NUMSみんなiが対応するかどうかを、対応するビット出力NUM置く
                { 
                    v.push_backを(NUMS [J]); 
                } 
                
            } 
            res.push_back( V); 
        } 
        戻りRES; 
    } 
}。
コードの表示

 

 

知識ポイントリンク:

1:https://blog.csdn.net/qq531958586/article/details/82928316

2:https://zhidao.baidu.com/question/169077652.html?qbl=relate_question_2&word=%CE%BB%D4%CB%CB%E31%3C%3C8

おすすめ

転載: www.cnblogs.com/nxnslc-blog/p/12382366.html