配列の位置を選択できるすべての可能な方法を取得する方法は? たとえば、サイズ 2 の配列の場合、最初の要素、2 番目の要素、および両方の要素の 3 つの可能性があります。サイズ 3 の配列の可能性は、1 番目、2 番目、3 番目、1 番目と 2 番目、1 番目と 3 番目、2 番目と 3 番目、最後に 1 番目と 2 番目と 3 番目です。私はそれのための単純なネストされたループが欲しい..
2 に答える
1
ネストの深さは配列のサイズに依存するため、ここではネストされたループは実際には答えではありません。
したがって、バイナリで考える: サイズ N の配列のサブセットは、正しい長さのゼロ以外の 2 進数に対応するので、次のようにします。
for (int subset_c = 1; subset_c < (1<<N); subset_c++)
{
{ start thinking about a new subset }
for (int j=0; j<N; j++)
{
if ((subset_c>>j)&1) { the subset should contain array[j] }
}
}
于 2013-01-08T20:32:42.283 に答える
0
{0, 1 ..., n-1} のすべての可能なサブセットを生成するアルゴリズムを探していますが、これを行う方法はたくさんあります。「すべてのサブセットを生成する」をすばやく検索してみてください。この問題を解決するための優れたアプローチが多数見つかるはずです。2 つの主要なアプローチには、サブセットの再帰的な生成と 2 進数の使用が含まれます。
お役に立てれば!
于 2013-01-08T20:34:07.753 に答える