您的位置:首页 > 产品设计 > UI/UE

HDU 5538 House Building

2016-07-13 11:08 399 查看
链接:http://acm.hdu.edu.cn/showproblem.php?pid=5538

题意:给你一个矩阵表示房子的俯视图,数字是几就代表此处有几块砖,要求出房子的表面积,不算底面

首先先把俯视图的面积加起来,再对每个数字的上下左右做差,有高度差就有表面积

#include <cstdio>
#include <cstring>
using namespace std;
int dir[4][2]= {1,0,0,1,-1,0,0,-1};
int main() {
int T,n,m,map[52][52];
scanf("%d",&T);
while(T-- && scanf("%d %d",&n,&m)) {
memset(map,0,sizeof(map));
for(int i=1; i<=n; i++) for(int j=1; j<=m; j++) scanf("%d",&map[i][j]); //从1开始输入,方便边角与地面做差
int ans=0;
for(int i=1; i<=n; i++)
for(int j=1; j<=m; j++) {
if(map[i][j]) ans++;
for(int k=0,x,y; k<4; k++) {
x=i+dir[k][0];
y=j+dir[k][1];
ans+=map[i][j]-map[x][y]>0 ? map[i][j]-map[x][y] : 0;
}
}
printf("%d\n",ans);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  水题 HDU