কম্পিউটার টিউটোরিয়াল

পাইথনে কলাম ফ্লিপ করে সর্বোচ্চ সমান রো বের করুন

একটি ০ এবং ১ Từ Мат্রিক্স দেওয়া আছে। যেকোনো সংখ্যক কলাম চুজ করে সেটির সব সেল ফ্লিপ করা যায় (০ কে ১, ১ কে ০)। কিছু ফ্লিপের পর সর্বোচ্চ কতগুলো রোয়ের সব ভ্যালু সমান হবে তা বের করতে হবে।

ম্যাট্রিক্স: 0 0 0 0 0 1 1 1 0 আউটপুট ২। কারণ প্রথম দুটি কলাম ফ্লিপ করলে শেষ দুটি রোর ভ্যালু সমান হয়।

সমাধানের ধাপসমূহ

  • x := matrix, m := রো সংখ্যা, n := কলাম সংখ্যা, r := 0
  • x-এ প্রতিটি রো i-এর জন্য:
    • c := 0
    • a := i-র প্রতিটি এলিমেন্ট l-এর জন্য l XOR 1 করে লিস্ট বানান
    • x-এ প্রতিটি রো j-এর জন্য:
      • যদি j == i বা j == a হয়, তবে c++
    • r := max(c, r)
  • r রিটার্ন

উদাহরণ

class Solution(object):
    def maxEqualRowsAfterFlips(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()
print(ob.maxEqualRowsAfterFlips([[0,0,0],[0,0,1],[1,1,0]]))

ইনপুট

[[0,0,0],[0,0,1],[1,1,0]]

আউটপুট

2
  1. ট্রায়্যাঙ্গুলার ম্যাচস্টিক নম্বরের পাইথন প্রোগ্রাম

  2. পাইথনে একটি সংখ্যার ফ্যাক্টোরিয়াল প্রোগ্রাম

  3. পাইথন প্রোগ্রাম: n-তম ফিবোনাচ্চি সংখ্যা বের করা

  4. পাইথন প্রোগ্রাম: n-তম ক্যাটালান সংখ্যা বের করা