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

Vùng chiếu của Hình dạng 3D

Giả sử có một lưới N x N, chúng ta đặt một số hình lập phương 1 x 1 x 1 thẳng hàng với trục x, y và z. Ở đây mỗi giá trị v =grid [i] [j] đang hiển thị một tháp v hình khối được đặt trên đầu ô lưới (i, j). Chúng ta xem hình chiếu của các hình lập phương này lên các mặt phẳng xy, yz và zx. Ở đây, chúng ta đang xem hình chiếu khi nhìn các hình khối từ mặt trên, mặt trước và hình chiếu cạnh. Chúng ta phải tìm tổng diện tích của cả ba hình chiếu.

Vì vậy, nếu đầu vào như [[1,2], [3,4]]

Vùng chiếu của Hình dạng 3D

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

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

  • xy:=0, yz:=0, xz:=0
  • đối với mỗi chỉ mục hàng r và hàng trong lưới, hãy thực hiện
    • yz:=yz + tối đa của hàng
    • đối với mỗi chỉ mục cột c và cột col trong hàng, hãy thực hiện
      • nếu grid [r] [c]> 0 khác 0 thì
        • xy:=xy + 1
    • đối với mỗi cột trong lưới, thực hiện
      • xz:=xz + tối đa col
  • trả về xy + yz + xz

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

Ví dụ

class Solution(object):
   def projectionArea(self, grid):
      xy = 0
      yz = 0
      xz = 0
      for r, row in enumerate(grid):
         yz += max(row)
         for c, col in enumerate(row):
            if grid[r][c] > 0:
               xy += 1
            for col in zip(*grid):
               xz += max(col)
      return xy + yz + xz
ob = Solution()
print(ob.projectionArea([[1,2],[3,4]]))

Đầu vào

[[1,2],[3,4]]

Đầu ra

17