博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
航院5538:House Building
阅读量:6627 次
发布时间:2019-06-25

本文共 1180 字,大约阅读时间需要 3 分钟。

这里写图片描述

这里写图片描述
这里写图片描述

题意概括:此题为一道模拟题,根据题意进行模拟即可。

解题思路:

1:此题求立体的表面积,只需算出每个面的表面积即可
2:表面积包括顶面和侧面
3:让每一个立方体与其前后左右的立方体的大小进行比较,多出来的部分需要计算其表面积。

错误原因:

1: 错误地将二重循环的初始条件从零开始。因为要比较前后左右四个立方体的表面积,因此应该从1开始,才能为之后的计算留下空间。
2: 只进行了判断,忘记了进行循环。因为要比较每一个立方体与其前后左右的大小,因此应当通过循环遍历这个二维数组,才能比较出每一个立方体与其前后左右的大小。

经验总结:

1: 边界问题:对于要与边界进行比较的二维数组,可将二维数组从1(而非0)开始遍历,这样就留下了空间使此二维数组可以与周围的边界进行比较。
2: 比较前可以通过memset对整个数组初始化,方便遍历。
3: 对于只要存在就需累加的情况,可以在输入时就进行累加。只需要在输入后进行if判断即可累加。

AC代码:

#include
#include
int main(void){ int e[55][55]; int T, n, m, sum, i, j; scanf("%d", &T); while(T--) { sum = 0; memset(e, 0, sizeof(e)); scanf("%d%d", &n, &m); for(i = 1; i <= n; i ++) { for(j = 1; j <= m; j ++) { scanf("%d", &e[i][j]); if(e[i][j]) { sum++; } } } for(i = 1; i <= n; i ++) { for(j = 1; j <= m; j ++) { if(e[i][j] > e[i-1][j]) { sum += e[i][j] - e[i-1][j]; } if(e[i][j] > e[i+1][j]) { sum += e[i][j] - e[i+1][j]; } if(e[i][j] > e[i][j-1]) { sum += e[i][j] - e[i][j-1]; } if(e[i][j] > e[i][j+1]) { sum += e[i][j] - e[i][j+1]; } } } printf("%d\n", sum); } return 0;}

转载于:https://www.cnblogs.com/moon13579/p/7662912.html

你可能感兴趣的文章
type的解释
查看>>
Windows Phone 8 开发环境搭建
查看>>
2017:IDC市场规模将持续增长 增速放缓
查看>>
从自动驾驶到学习机器学习:解读2017科技发展的15大趋势
查看>>
SinoBBD探索"一体化"大数据创新发展
查看>>
互联网金融带来新机遇 数据合规性不容忽视
查看>>
在Linux中永久并安全删除文件和目录的方法
查看>>
全民直播时代 内容监管还得靠技术
查看>>
10款Web开发最佳的Python框架
查看>>
c++ 类的对象与指针
查看>>
Boolean operations between triangle meshes
查看>>
面积并
查看>>
java-JDBC
查看>>
通信术语解释
查看>>
对.NET跨平台的随想
查看>>
ng-view 路由 简单应用
查看>>
Nginx Rewrite规则初探(转)
查看>>
Spring学习笔记1——IOC: 尽量使用注解以及java代码(转)
查看>>
黑魔法NSURLProtocol 可拦截网络加载
查看>>
Webtop中新建文档,无法选择Type和Format
查看>>