Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah algoritma rekursif menjana semua permutasi rentetan dan bilangan bulat?
memahami prinsip
Langkah -langkah awal: Untuk satu elemen, susunan adalah elemen itu sendiri.
dua elemen:
<code>perm(a) -> a</code>
tiga elemen:
<code>perm(ab) -> a + perm(b) -> ab b + perm(a) -> ba</code>
algoritma rekursif dalam kod pseudo
c# pelaksanaan<code>perm(abc) -> a + perm(bc) -> abc, acb b + perm(ac) -> bac, bca c + perm(ab) -> cab, cba</code>
<code>generatePermutations(permutation) { if (permutation 的长度 为 0) { 打印 permutation 返回 } 对于 permutation 中的每个元素 element: 创建一个新的排列 newPermutation,移除 element 将 element 添加到 generatePermutations(newPermutation) 的结果的前面 }</code>Kedua -dua elemen dalam pelbagai suis fungsi, sementara fungsi rekursif melintasi semua pengaturan yang mungkin. Langkah -langkah Backback () memastikan bahawa array kembali ke keadaan sebelumnya selepas memproses susunan untuk menghasilkan susunan seterusnya.
Atas ialah kandungan terperinci Bagaimanakah algoritma rekursif menjana semua permutasi rentetan dan bilangan bulat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!