【题目描述】
将长度N*M厘米的矩形区域均匀划分成N行M列(长度均为1厘米),在第i行第j列分比放上Aij个百年长为1厘米的立方体(1<=Aij
<=100),所有立方体形成一个立体图形。求该立体图形的表面积。
【输入】
第一行输入两个整数N和M,1<=N, M<=100;
接下俩N行,每行输入M个整数,第i行的第j个数字表示Aij
【输出】
输出表面积的大小
【示例输入】
2 2
2 1
1 1
【示例输出】
20
【思路】
- 统计总共小立方体个数count,计算总的表面积
count * 6
; - 分别统计重叠部分:左右方向的重叠、前后方向的重叠和上下方向的重叠
- 相减得到所求表面积
【java代码实现】
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int m = sc.nextInt();
int count = 0;
int overlap = 0;
int[][] arr = new int[n][m];
for (int i = 0; i < n; i++) {
int temp = -1;
for (int j = 0; j < m; j++) {
arr[i][j] = sc.nextInt();
if (temp >= 0) {
overlap += Math.min(temp, arr[i][j]);//1:左右方向的重叠
}
temp = arr[i][j];
count += arr[i][j];
overlap += (arr[i][j] - 1);//2:上下方向的重叠
}
}
for (int i = 0; i < m; i++) {
int temp = -1;
for (int j = 0; j < n; j++) {
if (temp >= 0) {
overlap += Math.min(temp, arr[j][i]);//3:前后方向的重叠
}
temp = arr[j][i];
}
}
int area = count * 6 - overlap * 2;
System.out.println(area);
}
以上为刚出炉的360提前批笔试题第一题。