HDU 5538 House Building

来源:互联网 发布:www.ttt258.com新域名 编辑:程序博客网 时间:2024/05/16 07:09

链接: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;}


0 0
原创粉丝点击