Computer >> Máy Tính >  >> Lập trình >> Python

Chương trình tìm chu vi của một hình đảo bằng Python

Giả sử chúng ta có một ma trận nhị phân trong đó 0 hiển thị ô trống và 1 hiển thị một khối tạo thành một hình dạng, bây giờ chúng ta phải tìm chu vi của hình dạng. Hình dạng sẽ không chứa bất kỳ lỗ nào bên trong nó.

Vì vậy, nếu đầu vào giống như

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

thì đầu ra sẽ là 14.

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • d:=0

  • chu vi:=0

  • height:=số hàng của ma trận

  • length:=số cột của ma trận

  • đối với mỗi hàng trong ma trận, thực hiện

    • c:=0

    • đối với mỗi val trong hàng, hãy thực hiện

      • nếu val giống 1 thì

        • bao quanh:=4

        • nếu c không giống với length - 1, thì

          • nếu ma trận [d, c + 1] giống 1 thì

            • surround:=bao quanh - 1

        • nếu c không giống 0 thì

          • nếu ma trận [d, c - 1] giống 1 thì

            • surround:=bao quanh - 1

        • nếu d không giống với chiều cao - 1, thì

          • nếu ma trận [d + 1, c] giống 1 thì

            • surround:=bao quanh - 1

        • nếu d không giống 0 thì

          • nếu ma trận [d - 1, c] giống 1 thì

            • surround:=bao quanh - 1

        • chu vi:=chu vi + bao quanh

        • c:=c + 1

    • d:=d + 1

  • trả về chu vi

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

Ví dụ

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))

Đầu vào

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]]

Đầu ra

14