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

পাইথনে K-তম সর্বাধিক XOR কোঅর্ডিনেট ভ্যালু খুঁজে বের করার প্রোগ্রাম


আমাদের একটি m x n ম্যাট্রিক্স আছে এবং অন্য একটি মান k। এখানে ম্যাট্রিক্সের কোঅর্ডিনেট (a, b)-এর মান হলো সব matrix[i, j]-এর XOR যেখানে i রেঞ্জে (0 থেকে a) এবং j রেঞ্জে (0 থেকে b)। আমাদের ম্যাট্রিক্সের সব কোঅর্ডিনেটের k-তম সর্বাধিক মান (১-ইন্ডেক্সড) বের করতে হবে।

উদাহরণস্বরূপ, ইনপুট ম্যাট্রিক্স:

52
16

এবং k = 1 হলে আউটপুট হবে 7 কারণ কোঅর্ডিনেট (0,1)-এর মান 5 XOR 2 = 7, এবং এটি সর্বাধিক।

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

  • m := রো সংখ্যা, n := কলাম সংখ্যা

  • i = 0 থেকে m-1 পর্যন্ত লুপ চালান:

    • j = 0 থেকে n-1 পর্যন্ত লুপ চালান:

      • যদি j != 0 হয়, তবে:

        • matrix[i][j] := matrix[i][j] XOR matrix[i][j-1]

  • seen := একটি নতুন ম্যাপ

  • count := 0

  • i = 0 থেকে n-1 পর্যন্ত লুপ চালান:

    • j = 0 থেকে m-1 পর্যন্ত লুপ চালান:

      • যদি j != 0 হয়, তবে:

        • matrix[j][i] := matrix[j][i] XOR matrix[j-1][i]

      • seen[matrix[j][i]] = seen.get(matrix[j][i], 0) + 1

      • count := count + 1

      • যদি count > k হয়, তবে:

        • min_value := min(seen)

        • seen[min_value] -= 1

        • যদি seen[min_value] == 0 হয়, তবে min_value-কে seen-এ থেকে মুছে দিন

  • min(seen) রিটার্ন করুন

উদাহরণ

নিচের ইমপ্লিমেন্টেশনটি দেখুন ভালোভাবে বুঝার জন্য:

def solve(matrix, k):
    m, n = len(matrix), len(matrix[0])
    for i in range(m):
        for j in range(n):
            if j:
                matrix[i][j] ^= matrix[i][j-1]
    seen = {}
    count = 0
    for i in range(n):
        for j in range(m):
            if j:
                matrix[j][i] ^= matrix[j-1][i]
            seen[matrix[j][i]] = seen.get(matrix[j][i], 0) + 1
            count += 1
            if count > k:
                min_value = min(seen)
                seen[min_value] -= 1
                if not seen[min_value]:
                    seen.pop(min_value)
    return min(seen)

matrix = [[5,2],[1,6]]
k = 1
print(solve(matrix, k))

ইনপুট

[[5,2],[1,6]], 1

আউটপুট

7
  1. Python-এ ডায়реक्टেড গ্রাফে সর্বোচ্চ রঙ মান বের করার প্রোগ্রাম

  2. পাইথনে BST-এ নির্দিষ্ট রেঞ্জে থাকা নোডের সংখ্যা খুঁজে বের করার প্রোগ্রাম

  3. পাইথন প্রোগ্রাম অ্যারেতে সবচেয়ে বড় এলিমেন্ট বের করা

  4. পাইথনে অ্যারে থেকে সর্বোচ্চ এলিমেন্ট বের করা