Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

พื้นที่ฉายภาพ 3 มิติ


สมมติว่ามีตาราง N x N เราวางลูกบาศก์ขนาด 1 x 1 x 1 อันที่จัดแนวแกนกับ x, y และ z ที่นี่แต่ละค่า v =grid[i][j] กำลังแสดงหอคอย v ลูกบาศก์ที่วางอยู่บนเซลล์กริด (i, j) เราดูการฉายภาพของลูกบาศก์เหล่านี้บนระนาบ xy, yz และ zx ที่นี่ เรากำลังดูการฉายภาพเมื่อมองลูกบาศก์จากด้านบน ด้านหน้า และด้านข้าง เราต้องหาพื้นที่ทั้งหมดของโครงทั้งสาม

ดังนั้นหากอินพุตเป็นแบบ [[1,2],[3,4]]

พื้นที่ฉายภาพ 3 มิติ

แล้วผลลัพธ์จะเป็น 17

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • xy :=0, yz :=0, xz :=0
  • สำหรับดัชนีแต่ละแถว r และแถวในตาราง ทำ
    • yz :=yz + สูงสุดของแถว
    • สำหรับแต่ละดัชนีคอลัมน์ c และคอลัมน์คอลัมน์ในแถว ทำ
      • ถ้า grid[r][c]> 0 ไม่ใช่ศูนย์ ดังนั้น
        • xy :=xy + 1
    • สำหรับแต่ละคอลัมน์ในกริด ให้ทำ
      • xz :=xz + ค่า col สูงสุด
  • คืนค่า xy + yz + xz

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

ตัวอย่าง

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

อินพุต

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

ผลลัพธ์

17