मान लीजिए कि हमारे पास एक बाइनरी मैट्रिक्स है, हम दिए गए मैट्रिक्स में किसी भी कॉलम का चयन कर सकते हैं और उस कॉलम में प्रत्येक सेल को फ्लिप कर सकते हैं। सेल को बदलने का मतलब है, सेल वैल्यू को इनवर्ट करना। हमें उन पंक्तियों की अधिकतम संख्या ज्ञात करनी है जिनमें कुछ संख्या में फ़्लिप के बाद सभी मान समान हों। तो अगर मैट्रिक्स जैसा है
0 | 0 | 0 |
0 | 0 | 1 |
1 | 1 | 0 |
आउटपुट 2 होगा। ऐसा इसलिए है क्योंकि पहले दो कॉलम में मानों को परिवर्तित करने के बाद, अंतिम दो पंक्तियों में समान मान होते हैं।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे:
-
x :=मैट्रिक्स, m :=पंक्तियों की संख्या और n :=स्तंभों की संख्या और r :=0
-
x में प्रत्येक तत्व i के लिए
-
सी :=0
-
a :=i में सभी तत्वों की एक सूची, l XOR i डालें
-
x में प्रत्येक तत्व j के लिए
-
अगर j =i या j =a, तो c को 1 से बढ़ा दें
-
-
r :=अधिकतम c और r
-
-
वापसी आर
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें:
उदाहरण
class Solution(object): def solve(self, matrix): x = matrix m = len(matrix) n = len(matrix[0] ) r =0 for i in x: c=0 a=[l ^ 1 for l in i] for j in x: if j== i or j ==a: c+=1 r=max(c, r) return r ob = Solution() matrix = [[0,0,0], [0,0,1], [1,1,0]] print(ob.solve(matrix))
इनपुट
[[0,0,0], [0,0,1], [1,1,0]]
आउटपुट
2