मेरे पास साफ मोजे का ढेर है जिसे मैं जोड़े में छांटना चाहता हूं। दुर्भाग्य से, मैं केवल पाइल के दोनों छोर से मोजे ले सकता हूं, बीच में नहीं। इसके अलावा, मैं केवल एक समय में एक मेल जोड़ी ढेर से मोजे निकाल सकते हैं। मेरी रणनीति पहले ढेर को एक या अधिक छोटे ढेर में विभाजित करना है। मुझे लगता है कि कुछ उदाहरणों से यह स्पष्ट हो जाएगा। मैं एक सकारात्मक पूर्णांक के रूप में प्रत्येक जुर्राब का प्रतिनिधित्व करता हूं (मिलान पूर्णांक समान मोज़े इंगित करता है)।
यदि मोजे का प्रारंभिक ढेर है
1 2 3 3 2 1
फिर मुझे कोई विभाजन नहीं करना है। मैं दोनों 1मोजे, फिर दोनों 2मोजे, फिर दोनों 3मोजे निकाल सकता हूं ।
यदि इसके बजाय प्रारंभिक ढेर है
1 2 3 2 3 1
फिर मुझे पहले इसे अलग करना होगा क्योंकि मैं सभी मोज़ों को केवल अंत से हटाकर जोड़ी नहीं बना पाऊंगा। एक संभावना इसे दो बवासीर में विभाजित करने की है
1 2 3 and 2 3 1
अब मैं 1मोजे निकाल सकता हूं , छोड़ कर 2 3 and 2 3, उसके बाद 3मोजे, छोड़ कर 2 and 2आखिर में 2मोजे।
आपका काम
मोजे के शुरुआती ढेर को देखते हुए, एक प्रोग्राम लिखें जो इसे छोटे ढेर में विभाजित करेगा जो मुझे मोज़े को सॉर्ट करने की अनुमति देगा। आपके कार्यक्रम को ढेर के सबसे कम संख्या में ढेर को विभाजित करना चाहिए (यदि कई सर्वश्रेष्ठ समाधान हैं, तो आपको केवल एक खोजने की आवश्यकता है)।
इनपुट को एक सूची, सीमांकित स्ट्रिंग, या अन्य सुविधाजनक रूप में दिया जाएगा। इसमें केवल पूर्णांकों के बीच 1और कुछ अधिकतम मान होंगे n, प्रत्येक पूर्णांक में दो बार होगा।
आउटपुट में इनपुट लिस्ट शामिल होनी चाहिए जो किसी भी सुविधाजनक रूप में दी गई छोटी सूचियों में विभाजित हो।
उदाहरण
Input Sample Output
1 1 1 1
1 2 1 2 1; 2 1 2
1 3 2 4 3 2 1 4 1 3 2; 4 3 2 1 4
1 2 3 4 3 4 1 2 1; 2 3; 4 3 4 1 2
1 1 2 2 3 3 1 1 2; 2 3 3
4 3 4 2 2 1 1 3 4 3 4 2; 2 1 1 3
ध्यान दें कि इनमें से अधिकांश इनपुट के लिए यह एकमात्र अनुमत आउटपुट नहीं है। दूसरे मामले के लिए, उदाहरण के लिए, आउटपुट 1 2; 1 2या 1 2 1; 2भी स्वीकार किए जाएंगे।
कुछ परीक्षण सुझावों के लिए Sp3000 के लिए धन्यवाद!
मुझे अपने कपड़ों को छांटने में काफी समय लगता है, इसलिए अपने कोड को जितना संभव हो उतना कम करें। बाइट्स जीत में सबसे छोटा जवाब!
टिप्पणियाँ
- मैं यह देखने के लिए नहीं चाहता कि यह देखने के लिए है कि इसकी मिलान करने वाली जोड़ी है या नहीं, इसलिए एक ही छोर से एक जोड़ी में दोनों मोजे लेने की अनुमति नहीं है। उदाहरण के लिए, यदि ढेर है
1 1 2 2तो आप इसे एक ढेर के रूप में छोड़ नहीं सकते हैं और1बाएं सिरे से दोनों मोज़े ले सकते हैं ।
123213क्या 1; 23; 213( 1; 23; 213-> 1; 2; 21-> ; 2; 2) में विभाजित किया जा सकता है ?
123213केवल दो बवासीर का उपयोग करके विभाजित करना संभव है , इसलिए आपके उत्तर को दो-पाइल विभाजन में से एक देना होगा।