题目大意:给出一个n*n的矩阵,矩阵中的数字代表1*1*1小方格的高度,计算组成的立体图的三视图的面积和;
解题思路:分别计算主视图,侧视图,俯视图的面积;
主视图面积:矩阵中的每一列的最大值之和;
侧视图面积:矩阵中的每一行的最大值之和;
俯视图面积:矩阵中所有不为0的数字之和;
最后将三视图的面积加起来即为最终结果;
源码附上:
class Solution {
public:
int projectionArea(vector<vector<int>>& grid) {
int sum=0;
for(int i=0;i<grid.size();i++)
{
int x=0,y=0;
for(int j=0;j<grid.size();j++)
{
if(grid[i][j]!=0)
sum+=1;
x=max(grid[i][j],x);
y=max(grid[j][i],y);
}
sum+=x+y;
}
return sum;
}
};