Rumah > Java > javaTutorial > teks badan

Bagaimanakah saya boleh menjana semua kombinasi yang mungkin daripada berbilang senarai panjang yang tidak diketahui menggunakan rekursi dalam Java?

DDD
Lepaskan: 2024-11-04 09:45:30
asal
420 orang telah melayarinya

How can I generate all possible combinations from multiple lists of unknown length using recursion in Java?

Penjanaan Lelaran Semua Gabungan daripada Pelbagai Senarai menggunakan Rekursi dalam Java

Bayangkan senario di mana anda berhadapan dengan pelbagai senarai, masing-masing mempunyai panjang yang tidak didedahkan. Tugas anda adalah untuk menghasilkan senarai tunggal yang menggabungkan semua kemungkinan gabungan unik. Untuk menggambarkan, pertimbangkan senarai berikut:

X: [A, B, C] 
Y: [W, X, Y, Z]
Salin selepas log masuk

Daripada senarai ini, anda seharusnya dapat menjana 12 kombinasi:

[AW, AX, AY, AZ, BW, BX, BY, BZ, CW, CX, CY, CZ]
Salin selepas log masuk

Jika senarai ketiga tambahan 3 elemen diperkenalkan, jumlah bilangan gabungan akan berkembang kepada 36.

Untuk mencapai penjanaan gabungan kompleks ini, rekursi muncul sebagai alat yang berkuasa:

<code class="java">void generatePermutations(List<List<Character>> lists, List<String> result, int depth, String current) {
    if (depth == lists.size()) {
        result.add(current);
        return;
    }

    for (int i = 0; i < lists.get(depth).size(); i++) {
        generatePermutations(lists, result, depth + 1, current + lists.get(depth).get(i));
    }
}</code>
Salin selepas log masuk

Dalam algoritma rekursif yang direka dengan teliti ini, senarai parameter mewakili koleksi senarai input, dicirikan oleh kuantiti dan panjang yang tidak tentu. Senarai hasil berdiri sebagai repositori semua pilih atur yang dijana semasa proses. Kedalaman dan arus parameter memudahkan laluan senarai input dan pembinaan gabungan individu, masing-masing.

Seruan muktamad fungsi generatif ini mengatur keseluruhan proses:

<code class="java">generatePermutations(lists, result, 0, "");</code>
Salin selepas log masuk

Melalui kerjasama harmoni rekursi dan Rangka Kerja Koleksi Java, algoritma ini memperkasakan anda untuk menghasilkan setiap kombinasi yang boleh dibayangkan dengan mudah daripada senarai senarai yang besar sewenang-wenangnya.

Atas ialah kandungan terperinci Bagaimanakah saya boleh menjana semua kombinasi yang mungkin daripada berbilang senarai panjang yang tidak diketahui menggunakan rekursi dalam Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan