> 백엔드 개발 > C++ > C#의 런타임 크기 목록에서 가능한 모든 조합을 생성하는 방법은 무엇입니까?

C#의 런타임 크기 목록에서 가능한 모든 조합을 생성하는 방법은 무엇입니까?

Patricia Arquette
풀어 주다: 2025-01-16 17:17:11
원래의
187명이 탐색했습니다.

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를 이진 문자열로 변환하고 목록의 길이와 일치하도록 필요한 경우 0을 채웁니다. 이 이진 문자열은 선택할 요소의 조합을 나타냅니다.
  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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿