मान लीजिए हमारे पास एक N*M मैट्रिक्स A है, जो एक 3D आकृति का प्रतिनिधित्व करता है। बिंदु (i, j) पर इमारत की ऊंचाई A[i][j] है। हमें आकृति का पृष्ठीय क्षेत्रफल ढूंढना है।
इसलिए, यदि इनपुट N = 3, M = 3, A = [[1, 4, 5], [3, 3, 4], [1, 3, 5]] है, तो आउटपुट 72 होगा।
समाधान दृष्टिकोण
इसे हल करने के लिए हम निम्न चरणों का पालन करेंगे:
res := 0iको 0 सेN-1तक के लिए:jको 0 सेM-1तक के लिए:up_side := 0left_side := 0- यदि
i > 0, तोup_side := A[i-1][j] - यदि
j > 0, तोleft_side := A[i][j-1] res := res + |A[i][j] - up_side| + |A[i][j] - left_side|- यदि
i == N - 1, तोres := res + A[i][j] - यदि
j == M - 1, तोres := res + A[i][j]
res := res + N * M * 2resलौटाएं।
उदाहरण
बेहतर समझ के लिए निम्न कार्यान्वयन देखें:
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))
इनपुट
[[1, 4, 5], [3, 3, 4], [1, 3, 5]]
आउटपुट
72