ধরুন আমাদের একটি বাইনারি ম্যাট্রিক্স আছে, আমরা প্রদত্ত ম্যাট্রিক্সের যেকোন সংখ্যক কলাম নির্বাচন করতে পারি এবং সেই কলামের প্রতিটি সেল ফ্লিপ করতে পারি। একটি সেল রূপান্তর মানে, সেল মান উল্টানো। কিছু সংখ্যক ফ্লিপ করার পরে আমাদের সর্বাধিক সংখ্যক সারি খুঁজে বের করতে হবে যেগুলির সমস্ত মান সমান। তাই যদি ম্যাট্রিক্সের মত হয়
0 | 0 | 0 |
0 | 0 | 1 |
1 | 1 | 0 |
আউটপুট হবে 2। এর কারণ হল প্রথম দুটি কলামে মান রূপান্তর করার পর, শেষ দুটি সারিতে সমান মান রয়েছে।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব:
-
x :=ম্যাট্রিক্স, m :=সারির সংখ্যা এবং n :=কলামের সংখ্যা এবং r :=0
-
প্রতিটি উপাদানের জন্য i x
-
c :=0
-
a :=i-এ সমস্ত উপাদানের একটি তালিকা, l XOR i
সন্নিবেশ করান -
x
এ প্রতিটি উপাদান j এর জন্য-
যদি j =i বা j =a হয়, তাহলে c 1 দ্বারা বাড়ান
-
-
r :=c এবং r
এর সর্বোচ্চ
-
-
রিটার্ন 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