मान लीजिए कि हमारे पास अद्वितीय तत्वों का एक मैट्रिक्स और एक योग है; हमें मैट्रिक्स से उन सभी जोड़ों को खोजना है जिनका योग दिए गए योग के बराबर है। यहां, जोड़ी के प्रत्येक तत्व को अलग-अलग पंक्तियों से लिया जाएगा।
तो, अगर इनपुट इस तरह है -
2 | 4 | 3 | 5 |
6 | 9 | 8 | 7 |
10 | 11 | 14 | 12 |
13 | 1 | 15 | 16 |
sum =13, तो आउटपुट [(2, 11), (4, 9), (3, 10), (5, 8), (12, 1)]
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
रेस :=एक नई सूची
-
n :=मैट्रिक्स का आकार
-
मेरे लिए 0 से n की सीमा में, करें
-
सूची मैट्रिक्स को क्रमबद्ध करें [i]
-
-
मैं के लिए 0 से n -1 की सीमा में, करो
-
i + 1 से n की श्रेणी में j के लिए, करें
-
निम्न :=0, उच्च :=n - 1
-
जबकि निम्न
=0, करें -
अगर (मैट्रिक्स [i, कम] + मैट्रिक्स [जे, उच्च]) योग के समान है, तो
-
जोड़ी:=(मैट्रिक्स [i, कम], मैट्रिक्स [जे, उच्च]) का उपयोग करके जोड़ी बनाएं
-
रेस के अंत में जोड़ी डालें
-
कम :=कम + 1
-
उच्च :=उच्च - 1
-
-
अन्यथा,
-
अगर (मैट्रिक्स [i] [निम्न] + मैट्रिक्स [जे] [उच्च]) <योग, तो
-
कम :=कम + 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)]