关注
我觉得可以按位置去思考,对于每一个位置grid[i][j](假设其值为v)如果v大于0,则这个i,j位置必然会为整个立体的表面积贡献一个上面和下面;然后遍历它的合法四周grid[i'][j'](假设其值为neighbor)则这个i,j位置会为整个立体的表面积贡献max(v - neighbor, 0)个侧面。时间复杂度m*n。代码如下: public static void main(String[] args) {
int n = sc.nextInt();
int m = sc.nextInt();
int[][] grid = new int[n][m];
for(int i=0;i < n; i++){
for(int j=0; j < m; j++){
grid[i][j] = sc.nextInt();
}
}
int[] dx = new int[]{-1,0,1,0};
int[] dy = new int[]{0,1,0,-1};
int ans = 0;
for (int r = 0; r < n; ++r)
for (int c = 0; c < m; ++c)
if (grid[r][c] > 0) {
ans += 2;
for (int k = 0; k < 4; ++k) {
int nr = r + dx[k];
int nc = c + dy[k];
int nv = 0;
if (0 <= nr && nr < n && 0 <= nc && nc < m)
nv = grid[nr][nc];
ans += Math.max(grid[r][c] - nv, 0);
}
}
System.out.println( ans );
}
查看原帖
点赞 评论
相关推荐
开心小狗🐶:感觉面游戏公司说不玩游戏是大忌
查看9道真题和解析 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 牛客树洞,我想对你说 #
19110次浏览 137人参与
# 大学最后一个寒假,我想…… #
55909次浏览 613人参与
# 快手技术岗信息交流阵地 #
8307次浏览 60人参与
# 你最近一次加班是什么时候? #
94527次浏览 515人参与
# 除了主业以外,你还有哪些其他收入? #
32520次浏览 299人参与
# 你最满意的offer薪资是哪家公司? #
42987次浏览 214人参与
# 求职中的尴尬瞬间 #
7707次浏览 66人参与
# 应届生被毁约被毁意向了怎么办 #
48331次浏览 282人参与
# 当下环境,你会继续卷互联网,还是看其他行业机会 #
138154次浏览 886人参与
# 机械人避雷的岗位/公司 #
30605次浏览 250人参与
# 研究所笔面经互助 #
98233次浏览 550人参与
# 牛客周边新品开箱 #
12115次浏览 91人参与
# 国央企薪资爆料 #
123643次浏览 580人参与
# 如何KTV领导 #
74558次浏览 505人参与
# 硬件人的春招flag #
53390次浏览 435人参与
# 牛友的志愿填报指南 #
36995次浏览 189人参与
# 打工人锐评公司红黑榜 #
176481次浏览 1023人参与
# 怎么给家人解释你的工作? #
16007次浏览 96人参与
# 得物app工作体验 #
30530次浏览 69人参与
# 国企还是互联网,你怎么选? #
173166次浏览 1313人参与
# 25届非技术实习投递记录 #
132653次浏览 993人参与
美的集团公司福利 724人发布