1 条题解
-
0Guest LV 0 MOD
-
0
#include <stdio.h> #define N 50 int Grid[N][N]; //记录输入的网格 int min(int a, int b) //返回 a,b 两者的较小值。 { if (a <= b) return a; else return b; } int surfaceArea(int n) { int count = 0; //统计立方体的总数 int amount = 0; //统计立方体接触面的数量 int i, j; for (i = 0; i < n; i++) for (j = 0; j < n; j++) { count += Grid[i][j]; if (Grid[i][j] > 0) amount += Grid[i][j] - 1; if (i > 0) amount += min(Grid[i][j], Grid[i - 1][j] ); if (j > 0) amount += min(Grid[i][j], Grid[i][j - 1] ); } return 6 * count - 2 * amount ; } int main() { int i, j, n; scanf("%d", &n); //输入网格的行数和列数 n。 for (i = 0; i < n; i++) for (j = 0; j < n; j++) scanf("%d", &Grid[i][j]); //输入每个单元格中叠放的正方体数量。 printf("%d\n", surfaceArea(n)); //输出三维物体的表面积。 return 0; }
- 1