题目:
分析:
逐个分析能否贡献表面积即可。
代码:
int all=0;
for(int i=0;i<g.size();i++)
for(int j=0;j<g.size();j++)
{
if(g[i][j]==0) continue;
//一定有上下底面积
all++;all++;
//x-1
if(i-1<0) all+=g[i][j];
else{
all+=max(0,g[i][j]-g[i-1][j]);
}
//x+1
if(i+1==g.size()) all+=g[i][j];
else{
all+=max(0,g[i][j]-g[i+1][j]);
}
//y+1
if(j-1<0) all+=g[i][j];
else{
all+=max(0,g[i][j]-g[i][j-1]);
}
if(j+1==g[0].size()) all+=g[i][j];
else{
all+=max(0,g[i][j]-g[i][j+1]);
}
}
return all;