Rumah > pembangunan bahagian belakang > tutorial php > Bagaimanakah Kita Boleh Menemui Pilihatur Ke-N bagi Set Secara Terus Tanpa Menjana Semua Pilihatur Terdahulu?

Bagaimanakah Kita Boleh Menemui Pilihatur Ke-N bagi Set Secara Terus Tanpa Menjana Semua Pilihatur Terdahulu?

Barbara Streisand
Lepaskan: 2024-12-05 09:35:14
asal
750 orang telah melayarinya

How Can We Find the N-th Permutation of a Set Directly Without Generating All Preceding Permutations?

Mendapatkan Pilihatur ke-n Secara Terus

Tugasnya ialah untuk mencari pilihatur ke-n bagi satu set elemen tanpa mengira semua secara eksplisit pilih atur sebelumnya. Ini boleh dicapai menggunakan algoritma pintar yang dipanggil Algoritma Factoradic.

Algoritma Factoradic memanfaatkan penguraian faktorial indeks pilih atur. Dengan berulang kali melakukan pembahagian Euclidian dengan nombor faktorial, kami memperoleh satu set hasil bahagi yang mewakili pilih atur.

Begini cara algoritma berfungsi:

  1. Penguraian Faktor: Bahagikan indeks pilih atur n dengan faktorial bagi (n-1)!, (n-2)!, dan seterusnya pada. Hasil bahagi disimpan dalam tatasusunan.
  2. Permutasi Perwakilan: Setiap hasil bahagi mewakili indeks unsur yang dipilih daripada elemen yang tinggal.
  3. Pelarasan: Memandangkan hasil bagi tidak mengambil kira nilai sebelumnya, ia perlu dilaraskan untuk mencerminkan pilih atur yang betul. Tambahkan setiap hasil bahagi dengan bilangan hasil bahagi sebelumnya yang lebih rendah atau sama dengannya.

Sebagai contoh, mari cari pilih atur ke-3 bagi {'A', 'B', 'C'}.

  • n = 3
  • Petikan: [1, 0, 0]
  • Petikan Dilaraskan: [1, 0, 1]

Pilihan itu ialah 'B', 'A', 'C', yang sememangnya pilih atur ke-3 bagi set yang diberikan.

Kod C yang disediakan melaksanakan Algoritma Factoradic, menunjukkan cara untuk mendapatkan n-th pilih atur terus tanpa mengira yang sebelumnya.

Atas ialah kandungan terperinci Bagaimanakah Kita Boleh Menemui Pilihatur Ke-N bagi Set Secara Terus Tanpa Menjana Semua Pilihatur Terdahulu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan