मान लीजिए कि हमारे पास एक बाइनरी मैट्रिक्स है जहां 0 खाली सेल दिखाता है और 1 एक ब्लॉक दिखाता है जो एक आकृति बनाता है, अब हमें आकृति की परिधि का पता लगाना है। आकृति अपने अंदर कोई छेद नहीं रखेगी।
तो, अगर इनपुट पसंद है
0 | 0 | 0 | 0 | 0 |
0 | 0 | 1 | 1 | 1 |
0 | 0 | 1 | 1 | 0 |
0 | 1 | 1 | 1 | 0 |
0 | 0 | 0 | 0 | 0 |
तो आउटपुट 14 होगा।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
घ :=0
-
परिधि :=0
-
ऊंचाई :=मैट्रिक्स की पंक्ति गणना
-
लंबाई :=मैट्रिक्स की स्तंभ संख्या
-
मैट्रिक्स में प्रत्येक पंक्ति के लिए, करें
-
सी:=0
-
पंक्ति में प्रत्येक वैल के लिए, करें
-
अगर वैल 1 के समान है, तो
-
घेरा :=4
-
यदि c लंबाई -1 के समान नहीं है, तो
-
अगर मैट्रिक्स [डी, सी + 1] 1 के समान है, तो
-
घेरा :=घेरा - 1
-
-
-
यदि c, 0 के समान नहीं है, तो
-
अगर मैट्रिक्स [डी, सी -1] 1 के समान है, तो
-
घेरा :=घेरा - 1
-
-
-
यदि d ऊंचाई -1 के समान नहीं है, तो
-
यदि मैट्रिक्स [d + 1, c] 1 के समान है, तो
-
घेरा :=घेरा - 1
-
-
-
यदि d, 0 के समान नहीं है, तो
-
अगर मैट्रिक्स [डी -1, सी] 1 के समान है, तो
-
घेरा :=घेरा - 1
-
-
-
परिधि :=परिधि + घेरा
-
सी:=सी + 1
-
-
-
डी:=डी + 1
-
-
वापसी परिधि
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
class Solution: def solve(self, matrix): d = 0 perimeter = 0 height = len(matrix) length = len(matrix[0]) for line in matrix: c = 0 for val in line: if val == 1: surround = 4 if c != length - 1: if matrix[d][c + 1] == 1: surround -= 1 if c != 0: if matrix[d][c - 1] == 1: surround -= 1 if d != height - 1: if matrix[d + 1][c] == 1: surround -= 1 if d != 0: if matrix[d - 1][c] == 1: surround -= 1 perimeter += surround c += 1 d += 1 return perimeter ob = Solution() matrix = [ [0,0,0,0,0], [0,0,1,1,1], [0,0,1,1,0], [0,1,1,1,0], [0,0,0,0,0] ] print(ob.solve(matrix))
इनपुट
matrix = [ [0,0,0,0,0], [0,0,1,1,1], [0,0,1,1,0], [0,1,1,1,0], [0,0,0,0,0]]
आउटपुट
14