题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5538
题意:给一个m * n的物体的俯视图,求表面积。
当搜索写的....果断超时。很水的一道题....经验不足
每个柱子跟四周比较一下就可以了。
#include <bits/stdc++.h>
using namespace std;
int grid[55][55];
int dir[4][2] = {1, 0, -1, 0, 0, 1, 0, -1};
int main() {
int t;
scanf("%d", &t);
while(t--) {
int n, m, ans = 0;
memset(grid, 0, sizeof(grid));
scanf("%d %d", &n, &m);
for(int i = 1; i <= n; i++) {
for(int j = 1; j <= m; j++) {
scanf("%d", &grid[i][j]);
if(grid[i][j]) ans++;
}
}
for(int i = 1; i <= n; i++) {
for(int j = 1; j <= m; j++) {
for(int d = 0; d < 4; d++) {
int di = i + dir[d][0];
int dj = j + dir[d][1];
if(grid[i][j] > grid[di][dj]) {
ans += (grid[i][j] - grid[di][dj]);
}
}
}
}
printf("%d\n", ans);
}
return 0;
}