首页 > 后端开发 > C++ > 如何从 C# 中的整数列表生成所有可能的组合?

如何从 C# 中的整数列表生成所有可能的组合?

DDD
发布: 2025-01-16 17:12:38
原创
975 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板