हमें फ़ॉर्म की एक स्ट्रिंग दी गई है: आरबीबीआर, जहां आर - लाल और बी - नीला।लाल और नीली गेंदों की एक स्ट्रिंग को देखते हुए, रंगों को एक साथ जोड़ने के लिए स्वैप की न्यूनतम संख्या
हमें रंगों को एक साथ जोड़ने के लिए आवश्यक न्यूनतम स्वैप ढूंढने की आवश्यकता है। उपर्युक्त मामले में आरआरबीबी या बीबीआरआर प्राप्त करने के लिए उत्तर 1
होगा।
मुझे लगता है कि आंशिक रूप से सॉर्ट किए गए सरणी को सॉर्ट करने के लिए एल्गोरिदम की तरह यह उपयोगी होगा क्योंकि एक साधारण प्रकार हमें स्वैप की संख्या देगा, लेकिन हम minimum
स्वैप की संख्या चाहते हैं।
कोई विचार?
यह कथित तौर पर this के अनुसार एक माइक्रोसॉफ्ट साक्षात्कार प्रश्न है।
गतिशील प्रोग्रामिंग की तरह बदबू आ रही है और ए * -स्टाइल पथदर्शी यहां उपयोगी होगी। – Phrogz
मुझे कई रंगों की गेंदों को सॉर्ट करने के लिए आवश्यक न्यूनतम स्वैप की अधिक सामान्य समस्या में रूचि है। मेरे उत्तर में दिया गया एल्गोरिदम गेंदों की संख्या पर रैखिक है, लेकिन रंगों की संख्या पर फैक्टोरियल (संभावित लक्ष्य तारों की संख्या शामिल रंगों का क्रमपरिवर्तन है)। क्या कोई बेहतर तरीका है? –
@ नल सेट: @ ब्रोंजरबीर्ड ने http://en.wikipedia.org/wiki/Dutch_national_flag_problem का हवाला देते हुए एक उत्तर लिखा जो कि 3-रंग स्ट्रिंग को सॉर्ट करने के बारे में है। शायद यह एक शुरुआती बिंदु हो सकता है। –