Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Menjana Semua Kemungkinan Gabungan daripada Senarai Bersaiz Runtime dalam C#?

Bagaimana untuk Menjana Semua Kemungkinan Gabungan daripada Senarai Bersaiz Runtime dalam C#?

Patricia Arquette
Patricia Arquetteasal
2025-01-16 17:17:11188semak imbas

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

Janakan semua kombinasi yang mungkin daripada senarai nilai bersaiz runtime

Dalam senario pengaturcaraan biasa, anda akan menghadapi situasi di mana anda perlu menjana semua kemungkinan gabungan elemen daripada senarai integer yang diberikan. Untuk mencapai ini dalam C#, ikuti langkah berikut:

  1. Tentukan saiz senarai masa jalan: Buat senarai integer yang dimulakan dengan nilai khusus yang anda miliki. Anda juga boleh menggunakan List<int> generik untuk menampung sebarang bilangan elemen pada masa jalan.
  2. Hitung bilangan gabungan: Untuk senarai n elemen, bilangan gabungan diberikan oleh 2^n, menggunakan perwakilan binari integer. Anda boleh menggunakan nilai ini untuk menggelungkan semua kombinasi yang mungkin.
  3. Jana kombinasi: Untuk setiap nilai i daripada 1 hingga 2^n - 1, tukar i kepada rentetan binari, padding dengan sifar jika perlu untuk memadankan panjang senarai. Rentetan binari ini mewakili gabungan elemen untuk dipilih.
  4. Pilih elemen: Lintas rentetan binari. Jika bit ialah 1, ia bermakna elemen yang sepadan dimasukkan dalam gabungan. Menambah elemen yang dipilih pada senarai sementara.
  5. Kombinasi cetak: Cetak elemen dalam senarai sementara dan ulangi proses ini untuk setiap gabungan.

Berikut ialah kod sampel yang melaksanakan algoritma ini:

<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>

Menggunakan algoritma ini, anda boleh menjana semua kemungkinan gabungan elemen dalam senarai dengan cekap, tanpa mengira saiznya.

Atas ialah kandungan terperinci Bagaimana untuk Menjana Semua Kemungkinan Gabungan daripada Senarai Bersaiz Runtime dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn