Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah algoritma std::next_permutation berfungsi untuk mencari pilih atur leksikografi yang lebih besar bagi suatu jujukan?
std::next_permutation Penjelasan Pelaksanaan
Algoritma std::next_permutation mengira pilih atur leksikografik seterusnya yang lebih besar daripada jujukan tertentu. Memahami pelaksanaannya adalah penting untuk memahami gelagatnya.
Garis Algoritma
Algoritma berulang mengikut urutan dari kanan ke kiri, mencari "naik" paling kiri (iaitu. , elemen yang lebih kecil daripada penggantinya). Jika tiada ascender ditemui, ini bermakna jujukan dalam susunan menurun, dalam kes ini ia membalikkan jujukan untuk mendapatkan pilih atur terkecil.
Jika tidak, algoritma diteruskan dengan mencari elemen terkecil dalam jujukan ke kanan daripada ascender (dipanggil "k"). Elemen ini kemudian ditukar dengan ascender. Akhir sekali, elemen di sebelah kanan ascender diterbalikkan untuk mengekalkan susunan yang semakin berkurangan.
Peranan Pembolehubah
Aliran Gelung
Gelung berulang sehingga saya mencapai permulaan jujukan (mula). Dalam setiap lelaran:
Contoh
Pertimbangkan urutan {1, 2, 4, 3} .
Atas ialah kandungan terperinci Bagaimanakah algoritma std::next_permutation berfungsi untuk mencari pilih atur leksikografi yang lebih besar bagi suatu jujukan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!