ホームページ >バックエンド開発 >C++ >C# で整数のリストから可能なすべての組み合わせを生成する方法

C# で整数のリストから可能なすべての組み合わせを生成する方法

DDD
DDDオリジナル
2025-01-16 17:12:38977ブラウズ

How to Generate All Possible Combinations from a List of Integers in C#?

値のリスト内のすべての組み合わせをリストします

C# では、整数の動的なリストを指定すると、多くの場合、その要素の可能なすべての組み合わせを生成する必要があります。たとえば、リスト {1, 2, 3} の場合、次の組み合わせを生成する必要があります:

<code>{1, 2, 3}
{1, 2}
{1, 3}
{2, 3}
{1}
{2}
{3}</code>

これを行うには、次のアルゴリズムを使用します:

  1. カウンターを初期化します: 2 の累乗 (累乗はリスト内の要素の数です) を使用して、可能な組み合わせの数を決定します。
  2. カウンタをバイナリに変換します: 入力リストの長さに一致するように、必要に応じてゼロを埋め込み、カウンタをバイナリ形式で表します。
  3. 要素の組み合わせを抽出します: バイナリ表現の各ビットについて、ビットが「1」に設定されている場合、入力リストの対応するインデックスにある要素を出力します。
  4. 反復カウンタ: 可能な組み合わせの最大数に達するまでカウンタを増分します。
  5. 組み合わせを出力します: 各組み合わせを別の行に出力します。

提供されている C# コードは、このアルゴリズムの実装を示しています。

<code class="language-csharp">static void Main(string[] args)
{
    GetCombination(new List<int> { 1, 2, 3 });
}

static void GetCombination(List<int> list)
{
    double count = Math.Pow(2, list.Count);
    for (int i = 1; i < count; i++)
    {
        string binary = Convert.ToString(i, 2).PadLeft(list.Count, '0');
        List<int> combination = new List<int>();
        for (int j = 0; j < binary.Length; j++)
        {
            if (binary[j] == '1')
            {
                combination.Add(list[j]);
            }
        }
        Console.WriteLine(string.Join(", ", combination));
    }
}</code>

以上がC# で整数のリストから可能なすべての組み合わせを生成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。