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!