【360】(数据分析师)表面积【Python】
题目描述
将长N*M厘米的短形区域分成N行M列(每行每列的宽度均为1厘米),第i行第j列的位置上叠放Ai,j个边长为1厘米的正方体(1<=Aij<=100)所有正方难题就组成了一个立体图形,每个正方体六个面中部分会被其他正方体遮挡,未被遮挡的部分的总面积即为该立方体图形的表面积,那么该立体图形的表面积是多少平方厘米?
输入描述
第一行包含两个整数N和M,1<=N,M<=1000
接下来N行,每行包含M个整数,第i行的第j个整数表示Aij
输出描述
输出表面积的大小。
示例1
输入:
2 2
2 1
1 1
输出:
20
测试结果通过了18%的测试用例,没有考虑遮挡的情况
import numpy as np
n,m = map(int,input().split())
grid = [[] for i in range(n)]
for i in range(n):
line = input().split(' ')
for j in range(len(line)):
grid[i].append(int(line[j]))
# print(A)
# 计算表面积
S1 = n*m
S2 = 0
for i in range (n):
a = max(grid[i])
# print('最大',a)
S2 += a
# 矩阵的转置
def transpose(A):
new_A = []
for i in range(len(A[0])):
A1 = []
for j in range(len(A)):
A1.append(A[j][i])
new_A.append(A1)
return new_A
grid2 = transpose(grid)
S3 = 0
for j in range (m):
b = max(grid2[j])
# print('转至后最大',b)
S3 += b
SSS = (S1 + S2 +S3)*2
print(SSS)