मान लीजिए हमारे पास दो 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 |
तो आउटपुट True होगा, क्योंकि यदि हम mat1 के शीर्ष दाएं 2x2 उप-मैट्रिक्स का ट्रांसपोज़ लेते हैं, तो हमें mat2 मिल जाएगा।
हल करने के चरण
- row := मैट्रिक्स की पंक्ति संख्या
- column := मैट्रिक्स की स्तंभ संख्या
- रेंज 0 से row - 1 तक के लिए i, करें:
- temp1 := एक नई सूची, temp2 := एक नई सूची
- r := i, col := 0
- जब तक r >= 0 और col < column, तब तक:
- mat1[r, col] को temp1 में डालें
- mat2[r, col] को temp2 में डालें
- r := r - 1, col := col + 1
- temp1 और temp2 सूचियों को क्रमबद्ध करें
- रेंज 0 से temp1 के आकार - 1 तक के लिए i, करें:
- यदि temp1[i], temp2[i] के समान नहीं है, तो:
- False लौटाएं
- यदि temp1[i], temp2[i] के समान नहीं है, तो:
- रेंज 1 से column - 1 तक के लिए j, करें:
- temp1 := एक नई सूची, temp2 := एक नई सूची
- r := row - 1, col := j
- जब तक r >= 0 और col < column, तब तक:
- mat1[r, col] को temp1 में डालें
- mat2[r, col] को temp2 में डालें
- r := r - 1, col := col + 1
- temp1 और temp2 सूचियों को क्रमबद्ध करें
- रेंज 0 से temp1 के आकार - 1 तक के लिए i, करें:
- यदि temp1[i], temp2[i] के समान नहीं है, तो:
- False लौटाएं
- यदि temp1[i], temp2[i] के समान नहीं है, तो:
- True लौटाएं
उदाहरण
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