मान लीजिए हमारे पास n x m आकार के दो मैट्रिक्स mat1 और mat2 हैं। हमें यह जांचना है कि क्या ये दो मैट्रिक्स सख्ती से बढ़ते क्रम में हैं या नहीं, केवल दो तत्वों को अलग-अलग मैट्रिक्स में तभी स्वैप करके जब वे दोनों मैट्रिक्स में स्थिति (i, j) पर हों।
तो, यदि इनपुट है
तो आउटपुट True होगा क्योंकि हम (7, 14) और (10, 17) जोड़ियों को स्वैप करके उन्हें सख्ती से बढ़ता हुआ बना सकते हैं।
हल करने के चरण
- row := mat1 की पंक्ति संख्या
- col := mat1 की स्तंभ संख्या
- रेंज 0 से row - 1 तक के लिए i, करें:
- रेंज 0 से col - 1 तक के लिए j, करें:
- यदि mat1[i,j] > mat2[i,j], तो:
- mat1[i, j] और mat2[i, j] को स्वैप करें
- रेंज 0 से row - 1 तक के लिए i, करें:
- रेंज 0 से col-2 तक के लिए j, करें:
- यदि mat1[i, j] >= mat1[i, j + 1] या mat2[i, j] >= mat2[i, j + 1], तो:
- रेंज 0 से row-2 तक के लिए i, करें:
- रेंज 0 से col - 1 तक के लिए j, करें:
- यदि mat1[i, j] >= mat1[i + 1, j] या mat2[i, j] >= mat2[i + 1, j], तो:
- True लौटाएं
उदाहरण
def solve(mat1, mat2):
row = len(mat1)
col = len(mat1[0])
for i in range(row):
for j in range(col):
if mat1[i][j] > mat2[i][j]:
mat1[i][j], mat2[i][j] = mat2[i][j], mat1[i][j]
for i in range(row):
for j in range(col-1):
if mat1[i][j] >= mat1[i][j + 1] or mat2[i][j] >= mat2[i][j + 1]:
return False
for i in range(row-1):
for j in range(col):
if mat1[i][j] >= mat1[i + 1][j] or mat2[i][j] >= mat2[i + 1][j]:
return False
return True
mat1 = [[7, 15],
[16, 10]]
mat2 = [[14, 9],
[8, 17]]
print(solve(mat1, mat2))
इनपुट
[[7, 15], [16, 10]], [[14, 9], [8, 17]]
आउटपुट
True