> 백엔드 개발 > 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. 카운터를 이진수로 변환: 카운터를 이진수 형식으로 표현하고 입력 목록의 길이와 일치하도록 필요에 따라 0을 채웁니다.
  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으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿