Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Tìm diện tích bề mặt của hình thể 3D trong Python


Cho ma trận N x M là A, biểu diễn hình thể 3D. Chiều cao của khối tại vị trí (i, j) là A[i][j]. Ta cần tìm diện tích bề mặt của hình thể.

Ví dụ, với N = 3, M = 3, A = [[1, 4, 5], [3, 3, 4], [1, 3, 5]], kết quả là 72.

Thuật toán giải quyết

  • res := 0.
  • Duyệt i từ 0 đến N-1, j từ 0 đến M-1:
    • up_side := 0, left_side := 0.
    • Nếu i > 0: up_side := A[i-1][j].
    • Nếu j > 0: left_side := A[i][j-1].
    • res += abs(A[i][j] - up_side) + abs(A[i][j] - left_side).
    • Nếu i == N-1: res += A[i][j].
    • Nếu j == M-1: res += A[i][j].
  • res += N * M * 2 (mặt trên và dưới).
  • Trả về res.

Ví dụ minh họa

M = 3
N = 3

def get_surface_area(array):
    res = 0
    for i in range(N):
        for j in range(M):
            up_side = 0
            left_side = 0
            if i > 0:
                up_side = array[i-1][j]
            if j > 0:
                left_side = array[i][j-1]
            res += abs(array[i][j] - up_side) + abs(array[i][j] - left_side)
            if i == N - 1:
                res += array[i][j]
            if j == M - 1:
                res += array[i][j]
    res += N * M * 2
    return res

array = [[1, 4, 5], [3, 3, 4], [1, 3, 5]]
print(get_surface_area(array))  # 72

Đầu vào

[[1, 4, 5], [3, 3, 4], [1, 3, 5]]

Đầu ra

72