1 条题解

  • 0
    @ 2022-08-07 19:15:20
    #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

信息

ID
1182
难度
6
分类
模拟 点击显示
标签
递交数
5
已通过
1
通过率
20%
被复制
1
上传者