"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > किसी अनुक्रम के अगले शाब्दिक रूप से बड़े क्रमपरिवर्तन को खोजने के लिए std::next_permutation एल्गोरिदम कैसे काम करता है?

किसी अनुक्रम के अगले शाब्दिक रूप से बड़े क्रमपरिवर्तन को खोजने के लिए std::next_permutation एल्गोरिदम कैसे काम करता है?

2024-11-11 को प्रकाशित
ब्राउज़ करें:406

How does the std::next_permutation algorithm work to find the next lexicographically larger permutation of a sequence?

std::next_permutation Implementation Explanation

std::next_permutation एल्गोरिदम किसी दिए गए अनुक्रम के अगले लेक्सिकोग्राफ़िक रूप से बड़े क्रमपरिवर्तन की गणना करता है। इसके व्यवहार को समझने के लिए इसके कार्यान्वयन को समझना महत्वपूर्ण है। , एक तत्व जो अपने उत्तराधिकारी से छोटा है)। यदि कोई आरोहक नहीं मिलता है, तो इसका मतलब है कि अनुक्रम घटते क्रम में है, इस स्थिति में यह सबसे छोटे क्रमपरिवर्तन प्राप्त करने के लिए अनुक्रम को उलट देता है।

अन्यथा, एल्गोरिथ्म अनुक्रम में दाईं ओर सबसे छोटा तत्व ढूंढकर जारी रखता है आरोही का (जिसे "k" कहा जाता है)। फिर इस तत्व को आरोही के साथ बदल दिया जाता है। अंत में, घटते क्रम को बनाए रखने के लिए आरोही के दाईं ओर के तत्वों को उलट दिया जाता है। वर्तमान तत्व की जांच की जा रही है। जब मैं एक आरोही होता हूं तो i के दाईं ओर। प्रत्येक पुनरावृत्ति के भीतर:

यदि i एक आरोही नहीं है, तो यह i और j को घटा देता है।

यदि मैं एक आरोही है, तो यह i (k) के दाईं ओर सबसे छोटा तत्व ढूंढता है ), इसे i के साथ स्वैप करता है, और i के दाईं ओर सब कुछ उलट देता है।

उदाहरण

    अनुक्रम पर विचार करें {1, 2, 4, 3} .
  • पुनरावृत्ति 1:
  • i प्रारंभ में 3 पर है। j 2 पर है। 3
  • पुनरावृत्ति 2:
  • k 2 पाया जाता है। 3 को 2 से बदल दिया जाता है। {1, 3, 4, 2}। 3 (4 और 2) के दाईं ओर के तत्व उलटे हैं। {1, 3, 2, 4}।
  • पुनरावृत्ति 3:
i घटा है और j घट गया है। i अब 2 पर है। j 1 पर है। 2 पुनरावृत्ति 5: i घटा है और j घट गया है। i अब 1 पर है। j अनुक्रम की शुरुआत में है। चूँकि अब कोई आरोहक नहीं हैं, इसलिए क्रम उलट गया है। {4, 3, 2, 1}.

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3