House Building
- 题目链接
House Building
- 题目大意
就是一个用多个小方块搭成的建筑,我们需要计算他的表面积,不用算底面的面积。
- 题解
对每个坐标位置的方块进行处理,检查他有几个面是暴露在外面的,这样我们可以得出每个坐标位置的方块的表面积,最后加起来就可以了。
- 代码
比较易懂的代码
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
int n,m,T,a[55][55],ans;
int way[4][2]={{0,-1},{0,1},{1,0},{-1,0}};
int solve(int x,int y)
{
int x1,y1,ans=0;
for (int i=0;i<4;i++)
{
x1=x+way[i][0]; y1=y+way[i][1];
if (a[x][y]>a[x1][y1]) ans=a[x][y]-a[x1][y1]+ans;
}
if (a[x][y]) return (ans+1);
else return 0;
}
int main()
{
scanf("%d",&T);
while (T--)
{
memset(a,0,sizeof(a));
ans=0;
scanf("%d%d",&n,&m);
for (int i=1;i<=n;i++)
for (int j=1;j<=m;j++) scanf("%d",&a[i][j]);
for (int i=1;i<=n;i++)
for (int j=1;j<=m;j++) ans+=solve(i,j);
printf("%d\n",ans);
}
return 0;
}