std::next_permutation شرح التنفيذ
تحسب خوارزمية std::next_permutation التقليب الأكبر التالي من الناحية المعجمية لتسلسل معين. يعد فهم تنفيذها أمرًا بالغ الأهمية لفهم سلوكها.
مخطط الخوارزمية
تتكرر الخوارزمية عبر التسلسل من اليمين إلى اليسار، وتبحث عن "الصاعد" في أقصى اليسار (أي: ، وهو عنصر أصغر من خليفته). إذا لم يتم العثور على تصاعدي، فهذا يعني أن التسلسل في ترتيب تنازلي، وفي هذه الحالة يتم عكس التسلسل للحصول على أصغر التقليب.خلاف ذلك، تستمر الخوارزمية في العثور على أصغر عنصر في التسلسل إلى اليمين من الصاعد (يسمى "ك"). ثم يتم تبديل هذا العنصر مع الصاعد. أخيرًا، يتم عكس العناصر الموجودة على يمين الصاعد للحفاظ على الترتيب التنازلي. العنصر الحالي الذي يتم فحصه.j: يشير إلى العنصر الذي يسبقه مباشرة i.
مثال
فكر في التسلسل {1، 2، 4، 3}.
التكرار 2: k تم العثور على 2. تم تبديل 3 بـ 2. {1, 3, 4, 2}. يتم عكس العناصر الموجودة على يمين 3 (4 و 2). {1, 3, 2, 4}.
التكرار 3:تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3