आपके पास आकार m * n का इनपुट सरणी है। सरणी में प्रत्येक कक्ष P या T के साथ आबाद है। सरणी पर आप कर सकते हैं केवल ऑपरेशन फ्लिप कॉलम है। जब आप किसी कॉलम को फ्लिप करते हैं, तो उस कॉलम स्विच की सभी कोशिकाओं में अक्षर (P T और वाइसवर्स बन जाता है)। यदि आपके पास समान अक्षर (जैसे PPPP) के साथ पंक्तियों की संख्या 'x' है तो आपको एक बिंदु मिलता है। एक एल्गोरिथ्म डिज़ाइन करें जो सरणी में लेता है और एक समाधान लौटाता है (जो कॉलम फ्लिप करने के लिए) जैसे कि परिणामस्वरूप सरणी में अधिकतम अंक संभव हैं।
नोट: यदि उच्चतम स्कोर प्राप्त करने वाले कई समाधान हैं, तो सबसे कम संख्या में फ़्लिप चुनें। उदाहरण:
इनपुट एरियर:
PPTPP
PPTPP
PPTTP
PPPTT
PPPTT
आउटपुट:
3
स्पष्टीकरण:
एक ऐसा समाधान जो सबसे अधिक अंक देता है: फ्लिप कॉलम नं। 3
फिर मूल सरणी होगी:
PPPPP // 1 point
PPPPP // 1 point
PPPTP
PPTTT
PPTTT
//Total: 2 points
ध्यान दें कि दो में से एक अंक प्राप्त करने के लिए कॉलम 4 और 5 को भी फ्लिप कर सकता है, लेकिन इसके लिए अतिरिक्त फ्लिप की आवश्यकता है।
आप दो आयामी सरणी का प्रतिनिधित्व करने के लिए किसी भी सुविधाजनक इनपुट प्रारूप का उपयोग कर सकते हैं, और आप किसी भी दो अलग, लेकिन निश्चित, मानों का प्रतिनिधित्व करने के लिए Pऔर हो सकता है T।
यह कोड गोल्फ है, इसलिए सबसे छोटा उत्तर (बाइट्स में) जीतता है।