ধরুন আমাদের অনন্য উপাদানের একটি ম্যাট্রিক্স এবং একটি যোগফল আছে; আমাদের ম্যাট্রিক্স থেকে সমস্ত জোড়া খুঁজে বের করতে হবে যার যোগফল প্রদত্ত যোগফলের সমান। এখানে, জোড়ার প্রতিটি উপাদান বিভিন্ন সারি থেকে নেওয়া হবে।
সুতরাং, যদি ইনপুট −
এর মত হয়2 | 4 | ৷3 | 5 |
6 | 9 | 8 | 7 |
10 | 11 | 14 | ৷12 |
13 | 1 | ৷15 | 16 | ৷
যোগফল =13, তাহলে আউটপুট হবে [(2, 11), (4, 9), (3, 10), (5, 8), (12, 1)]
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
res :=একটি নতুন তালিকা
-
n :=ম্যাট্রিক্সের আকার
-
0 থেকে n রেঞ্জের জন্য, করুন
-
তালিকা ম্যাট্রিক্স [i]
সাজান
-
-
আমি 0 থেকে n - 1 রেঞ্জের জন্য, করুন
-
i + 1 থেকে n রেঞ্জে j এর জন্য, করুন
-
নিম্ন :=0, উচ্চ :=n - 1
-
যখন কম
=0, করুন -
যদি (matrix[i, low] + matrix[j, high]) যোগফলের সমান হয়, তাহলে
-
pair :=(ম্যাট্রিক্স[i, low],matrix[j, high]) ব্যবহার করে জোড়া তৈরি করুন
-
res এর শেষে জোড়া সন্নিবেশ করুন
-
low :=low + 1
-
উচ্চ :=উচ্চ - 1
-
-
অন্যথায়,
-
যদি (matrix[i][low] + matrix[j][high]) <যোগফল, তারপর
-
low :=low + 1
-
-
অন্যথায়,
-
উচ্চ :=উচ্চ - 1
-
-
-
-
-
-
রিটার্ন রিটার্ন
উদাহরণ (পাইথন)
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
MAX = 100 def sum_pair(matrix, sum): res = [] n = len(matrix) for i in range(n): matrix[i].sort() for i in range(n - 1): for j in range(i + 1, n): low = 0 high = n - 1 while (low < n and high >= 0): if ((matrix[i][low] + matrix[j][high]) == sum): pair = (matrix[i][low],matrix[j][high]) res.append(pair) low += 1 high -= 1 else: if ((matrix[i][low] + matrix[j][high]) < sum): low += 1 else: high -= 1 return res sum = 13 matrix = [ [2, 4, 3, 5], [6, 9, 8, 7], [10, 11, 14, 12], [13, 1, 15, 16]] print(sum_pair(matrix, sum))
ইনপুট
[[2, 4, 3, 5], [6, 9, 8, 7], [10, 11, 14, 12], [13, 1, 15, 16]] sum = 13
আউটপুট
[(4, 9), (5, 8), (2, 11), (3, 10), (12, 1)]