首頁 >後端開發 >C++ >如何在 C# 中從運行時大小的清單產生所有可能的組合?

如何在 C# 中從運行時大小的清單產生所有可能的組合?

Patricia Arquette
Patricia Arquette原創
2025-01-16 17:17:11133瀏覽

How to Generate All Possible Combinations from a Runtime-Sized List in C#?

從運行時大小的數值清單中產生所有可能的組合

在典型的程式設計場景中,您會遇到需要從給定的整數清單中產生所有元素的可能組合的情況。要在 C# 中實現這一點,請按照以下步驟操作:

  1. 決定執行階段清單大小: 建立一個用您擁有的特定值初始化的整數清單。您也可以使用泛型 List<int> 來適應運行時任意數量的元素。
  2. 計算組合數: 對於包含 n 個元素的列表,組合數由 2^n 給出,使用整數的二進位表示法。您可以使用此值循環遍歷所有可能的組合。
  3. 產生組合: 對於從 1 到 2^n - 1 的每個 i 值,將 i 轉換為二進位字串,如果需要,用零填充以匹配列表的長度。此二進位字串表示要選擇的元素組合。
  4. 選擇元素: 遍歷二進位字串。如果一位是 1,則表示組合中包含對應的元素。將選定的元素新增至臨時清單。
  5. 列印組合: 列印臨時清單中的元素,並對每個組合重複此過程。

以下是實現此演算法的範例程式碼:

<code class="language-csharp">using System;
using System.Collections.Generic;

public class CombinationGenerator
{
    public static void Main(string[] args)
    {
        GenerateCombinations(new List<int> { 1, 2, 3 });
    }

    public static void GenerateCombinations(List<int> list)
    {
        int count = (int)Math.Pow(2, list.Count);
        for (int i = 1; i < count; i++)
        {
            List<int> combination = new List<int>();
            string binary = Convert.ToString(i, 2).PadLeft(list.Count, '0');
            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