C で n 個のアイテムの k 個の組み合わせを効果的に生成する
n 個のグループから k 個の個の可能なすべての組み合わせを生成するタスクには、以下を使用する必要があります。バイナリを活用した賢いアルゴリズム
実装
アルゴリズムの本質は、最初の k ビットが 1 に設定され、残りの n - k ビットが設定された 2 進数のリストを作成することにあります。このバイナリ表現は割り当てリストとして機能し、各ビットは、特定の個人がリストに含まれるか除外されるかを示します。
アルゴリズム
アルゴリズムの主なステップは次のとおりです:
例
n = 5 および k = 3 のシナリオを考えてみましょう。アルゴリズムは次の組み合わせを生成します:
0 1 2 0 1 3 0 1 4 0 2 3 0 2 4 0 3 4 1 2 3 1 2 4 1 3 4 2 3 4
分析
これこのアルゴリズムはバイナリ表現を効果的に利用して、考えられるすべての組み合わせを効率的に生成します。ビットマスク操作は、組み合わせに個人を含めるか除外するかを決定する簡単かつ迅速な方法を提供します。
最適化
効率をさらに高めるために、最適化には並べ替えが含まれます。生成された組み合わせ。厳密に必要というわけではありませんが、同じ入力パラメータの組み合わせの順序が一貫していることが保証されます。
以上がC で n 個の項目の k 個の組み合わせすべてを効率的に生成するにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。