मान लीजिए हमारे पास n x m आकार के दो आव्यूह हैं जिनका नाम mat1 और mat2 है। हमें यह जांचना होगा कि ये दो मैट्रिक्स सख्ती से बढ़ रहे हैं या नहीं, केवल दो तत्वों को अलग-अलग मैट्रिक्स में स्वैप करके, जब वे दोनों मैट्रिक्स में स्थिति (i, j) पर हों।
तो, अगर इनपुट पसंद है
7 | <टीडी>1
1 6 | <टीडी>1
1 4 | 9 |
8 | <टीडी>1
तब आउटपुट सही होगा क्योंकि हम (7, 14) और (10, 17) जोड़े को सख्ती से बढ़ाने के लिए स्वैप कर सकते हैं।
1 4 | <टीडी>1
1 6 | <टीडी>1
7 | 9 |
8 | <टीडी>1
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- पंक्ति :=mat1 की पंक्ति गणना
- col :=mat1 की कॉलम संख्या
- मैं के लिए 0 से पंक्ति -1 की सीमा में, करो
- जे के लिए 0 से col-1 की श्रेणी में, do
- अगर mat1[i,j]> mat2[i,j], तो
- स्वैप mat1[i, j] और mat2[i, j]
- अगर mat1[i,j]> mat2[i,j], तो
- मैं के लिए 0 से पंक्ति -1 की सीमा में, करो
- जे के लिए 0 से col-2 तक, करें
- अगर mat1[i, j]>=mat1[i, j + 1] या mat2[i, j]>=mat2[i, j + 1], तो
- झूठी वापसी
- अगर mat1[i, j]>=mat1[i, j + 1] या mat2[i, j]>=mat2[i, j + 1], तो
- जे के लिए 0 से col-2 तक, करें
- मैं के लिए 0 से पंक्ति-2 की सीमा में, करते हैं
- जे के लिए 0 से col-1 की श्रेणी में, do
- अगर mat1[i, j]>=mat1[i + 1, j] या mat2[i, j]>=mat2[i + 1, j], तो
- झूठी वापसी
- अगर mat1[i, j]>=mat1[i + 1, j] या mat2[i, j]>=mat2[i + 1, j], तो
- जे के लिए 0 से col-1 की श्रेणी में, do
- जे के लिए 0 से col-1 की श्रेणी में, do
- सही लौटें
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
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