关注
我觉得可以按位置去思考,对于每一个位置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 );
}
查看原帖
点赞 评论
相关推荐
10-15 16:40
河南科技大学 Java 点赞 评论 收藏
分享
10-27 21:10
浙江工业大学 Java 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 校招生月薪1W算什么水平 #
31855次浏览 185人参与
# 哪一瞬间觉得自己长大了 #
37939次浏览 492人参与
# “vivo”个offer #
38100次浏览 279人参与
# 我是面试官,请用一句话让我破防 #
25703次浏览 126人参与
# vivo工作体验 #
27634次浏览 123人参与
# 如果上班像打游戏,你最想解锁什么技能 #
7813次浏览 70人参与
# 工作后明白的那些道理 #
21453次浏览 223人参与
# 一人一个landing小技巧 #
123568次浏览 1441人参与
# 实习最想跑路的瞬间 #
87164次浏览 542人参与
# 中美关税战对我们有哪些影响 #
42418次浏览 360人参与
# 中美关系回暖,你会选择出海吗? #
6094次浏览 106人参与
# i人适合做什么工作 #
11033次浏览 97人参与
# 华为保温 #
107111次浏览 404人参与
# 读研or工作,哪个性价比更高? #
77904次浏览 767人参与
# 哪些行业值得去? #
5070次浏览 48人参与
# 美团开奖 #
218585次浏览 1133人参与
# 如果秋招能重来,我会____ #
36440次浏览 295人参与
# AI时代,哪些岗位最容易被淘汰 #
3095次浏览 27人参与
# 华为池子有多大 #
110223次浏览 750人参与
# 国央企笔面经互助 #
161592次浏览 1182人参与
# 苦尽甘来时,再讲来时路 #
32476次浏览 453人参与