首頁 >後端開發 >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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn