surface
垃圾题目:
题目描述
古天乐在搭积木,积木图可以抽象为一个n*m的网格图,其中第(i,j)的位置有A[i][j]个积木。求表面积。
格式
输入第一行两个数n,m,接下来n行每行m个数,表示A[i][j]。
输出一个数,表示表面积。
范围
看到这题的时候,我先是回忆小学,毕竟求表面积把每个面拖出来,拼成一个大的是小学就会了的,然而,我懒得去思考,所以用模拟去解决,这恰好让我逃过一劫,毕竟凹进去的表面积会漏算,但一根柱子一根柱子加上去,再消掉重合部分的表面积就没这事了。
小猪周周:
555,又没去注释,要被打屁股了。。。5555
我考场上想了一个只接搜的,但是被样例卡掉了。。。
然后就是模拟了。。。
代码:
#include<bits/stdc++.h>
using namespace std;
int n,m,a[110][110],ans=0;
int why()
{
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
{
int b=a[i][j];
ans+=6*b-max(0,b-1)*2;//max(0,b-1)是为了特判柱高为0的情况
ans-=min(a[i-1][j],a[i][j])*2;
ans-=min(a[i][j-1],a[i][j])*2;
}
printf("%d\n",ans);
fclose(stdin);
fclose(stdout);
return 0;
}
int main()
{
freopen("surface.in","r",stdin);
freopen("surface.out","w",stdout);
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
scanf("%d",&a[i][j]);
return why();
}
水题水题!签到题!