Rumah  >  Artikel  >  Java  >  Bagaimana untuk Menjana Semua Kemungkinan Gabungan daripada Pelbagai Senarai dalam Java Menggunakan Rekursi?

Bagaimana untuk Menjana Semua Kemungkinan Gabungan daripada Pelbagai Senarai dalam Java Menggunakan Rekursi?

Susan Sarandon
Susan Sarandonasal
2024-11-02 13:34:03386semak imbas

How to Generate All Possible Combinations from Multiple Lists in Java Using Recursion?

Menjana Semua Gabungan daripada Berbilang Senarai di Java

Menjana senarai tunggal yang mengandungi semua kemungkinan gabungan unik daripada bilangan senarai arbitrari, setiap satu dengan panjang yang berbeza-beza, boleh menjadi tugas yang mencabar. Artikel ini meneroka penyelesaian berasaskan Java menggunakan konsep rekursi.

Pernyataan Masalah

Memandangkan bilangan senarai yang tidak diketahui, setiap satu dengan panjang yang tidak diketahui, matlamatnya ialah untuk mencipta satu senarai yang terdiri daripada semua kemungkinan gabungan elemen daripada senarai ini. Sebagai contoh, dengan senarai X dan Y ditakrifkan sebagai:

X: [A, B, C] 
Y: [W, X, Y, Z]

Output yang dijangkakan ialah senarai dengan 12 kombinasi:

[AW, AX, AY, AZ, BW, BX, BY, BZ, CW, CX, CY, CZ]

Penyelesaian

Penyelesaian menggunakan rekursi untuk menjana semua kombinasi yang mungkin. Senarai disimpan dalam senarai senarai, dan senarai hasil dibuat untuk menahan pilih atur. Kaedah generatePermutations mengambil senarai senarai, senarai hasil, parameter kedalaman dan rentetan yang mewakili pilih atur semasa sebagai input.

generatePermutations Method

<code class="java">void generatePermutations(List<List<Character>> lists, List<String> result, int depth, String current) {
    // Base case: if we've reached the end of the list of lists
    if (depth == lists.size()) {
        result.add(current);
        return;
    }

    // Get the current list at the specified depth
    List<Character> currentList = lists.get(depth);

    // Iterate over each element in the current list
    for (int i = 0; i < currentList.size(); i++) {
        // Recursively call generatePermutations to build permutations
        generatePermutations(lists, result, depth + 1, current + currentList.get(i));
    }
}</code>

Panggilan awal kepada kaedah generatePermutations akan menetapkan kedalaman kepada 0 dan rentetan semasa kepada rentetan kosong. Setiap panggilan rekursif akan menambah kedalaman dan menggabungkan aksara semasa kepada rentetan semasa. Kes asas dicapai apabila kedalaman adalah sama dengan bilangan senarai, dan pada ketika itu, pilih atur semasa ditambah pada senarai hasil.

Dengan menggunakan rekursi, kaedah generatePermutations membina semua kombinasi yang mungkin bagi elemen daripada senarai input dan menambahkannya pada senarai hasil. Penyelesaian ini cekap dan boleh disesuaikan dengan sebarang nombor atau panjang senarai input.

Atas ialah kandungan terperinci Bagaimana untuk Menjana Semua Kemungkinan Gabungan daripada Pelbagai Senarai dalam Java Menggunakan Rekursi?. 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