मान लीजिए हमारे पास दो N X M हैं जिन्हें mat1 और mat2 कहा जाता है। एक ऑपरेशन में, हम किसी भी वर्ग उप-मैट्रिक्स को mat1 में स्थानांतरित कर सकते हैं। हमें यह जांचना है कि दिए गए ऑपरेशन को करके हम mat1 से mat2 प्राप्त कर सकते हैं या नहीं।
तो, अगर इनपुट पसंद है
5 | 6 | 7 |
1 | 2 | 3 |
6 | 8 | 9 |
5 | 6 | 2 |
1 | 7 | 3 |
6 | 8 | 9 |
तो आउटपुट ट्रू होगा, क्योंकि अगर हमें मैट 1 के आकार 2x2 के टॉप राइट सब-मैट्रिक्स का स्थानान्तरण मिलता है, तो हमें मैट 2 मिलेगा।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- पंक्ति :=आव्यूहों की पंक्ति संख्या
- स्तंभ :=आव्यूहों की स्तंभ संख्या
- मैं के लिए 0 से पंक्ति -1 की सीमा में, करो
- temp1:=एक नई सूची, temp2:=एक नई सूची
- r :=i, col :=0
- जबकि r>=0 और col <कॉलम, करें
- temp1 में mat1[r, col] डालें
- temp2 में mat2[r, col] डालें
- r :=r-1, col :=col + 1
- सूची temp1 और temp2 क्रमबद्ध करें
- मैं के लिए 0 से लेकर temp1-1 के आकार के बीच में
- यदि temp1[i], temp2[i] के समान नहीं है, तो
- झूठी वापसी
- यदि temp1[i], temp2[i] के समान नहीं है, तो
- जे के लिए श्रेणी 1 से कॉलम -1 तक, करें
- temp1:=एक नई सूची, temp2:=एक नई सूची
- r :=row-1, col:=j
- जबकि r>=0 और col <कॉलम, करें
- temp1 में mat1[r, col] डालें
- temp2 में mat2[r, col] डालें
- r :=r-1, col :=col + 1
- सूची temp1 और temp2 क्रमबद्ध करें
- i के लिए 0 से लेकर temp1-1 के आकार तक के लिए
- यदि temp1[i], temp2[i] के समान नहीं है, तो
- झूठी वापसी
- यदि temp1[i], temp2[i] के समान नहीं है, तो
- सही लौटें
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
def solve(mat1, mat2): row = len(mat1) column = len(mat1[0]) for i in range(row): temp1 = [] temp2 = [] r = i col = 0 while r >= 0 and col < column: temp1.append(mat1[r][col]) temp2.append(mat2[r][col]) r -= 1 col += 1 temp1.sort() temp2.sort() for i in range(len(temp1)): if temp1[i] != temp2[i]: return False for j in range(1, column): temp1 = [] temp2 = [] r = row - 1 col = j while r >= 0 and col < column: temp1.append(mat1[r][col]) temp2.append(mat2[r][col]) r -= 1 col += 1 temp1.sort() temp2.sort() for i in range(len(temp1)): if temp1[i] != temp2[i]: return False return True mat1 = [ [5, 6, 7], [1, 2, 3], [6, 8, 9]] mat2 = [ [5, 6, 2], [1, 7, 3], [6, 8, 9]] print(solve(mat1, mat2))
इनपुट
[ [5, 6, 7], [1, 2, 3], [6, 8, 9]], [ [5, 6, 2], [1, 7, 3], [6, 8, 9]]
आउटपुट
True