博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
杭电ACM——6518,Clumsy Keke(暴力+思维)
阅读量:4050 次
发布时间:2019-05-25

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

突破口:开一个三维数组,模拟三维直角坐标系,详见代码。

代码如下:

#include
#include
#include
#include
typedef long long ll;using namespace std;const int inf=0x3f3f3f3f;const int maxn=1e2+5;int s[maxn][maxn][maxn];int main(){ int x,y,z,i,j,k; int sum; while(~scanf("%d%d%d",&x,&y,&z)) { sum=0; for(i=0;i<=x;i++) for(j=0;j<=y;j++) for(k=0;k<=z;k++) s[i][j][k]=0; for(i=1;i<=x;i++) for(j=1;j<=y;j++) { scanf("%d",&s[i][j][0]); if(s[i][j][0]==1) //等于1说明在这个位置有小正方形的投影,就将s[i,j,1~z]全部+1(相当于过该点画一条直线垂直于xOy) for(k=1;k<=z;k++) s[i][j][k]++; } for(i=1;i<=y;i++) for(j=1;j<=z;j++) { scanf("%d",&s[0][i][j]); if(s[0][i][j]==1) //等于1说明在这个位置有小正方形的投影,就将s[1~i,j,z]全部+1(相当于过该点画一条直线垂直于yOz) for(k=1;k<=x;k++) s[k][i][j]++; } for(i=1;i<=z;i++) for(j=1;j<=x;j++) { scanf("%d",&s[j][0][i]); //等于1说明在这个位置有小正方形的投影,就将s[ij,1~y,z]全部+1相当于过该点画一条直线垂直于xOz) if(s[j][0][i]==1) for(k=1;k<=y;k++) s[j][k][i]++; } for(i=0;i<=x;i++) for(j=0;j<=y;j++) for(k=0;k<=z;k++) if(s[i][j][k]==3) //只有当这个位置的值为3时,才有小正方形(即为三条直线相交之处) sum++; printf("%d\n",sum); } return 0;}

Tips:这道题要特别注意输入,输入一乱,全盘皆输。

转载地址:http://dddci.baihongyu.com/

你可能感兴趣的文章
linux不同模块completion通信
查看>>
linux printf获得时间戳
查看>>
C语言位扩展
查看>>
linux irqdebug
查看>>
git 常用命令
查看>>
linux位操作API
查看>>
uboot.lds文件分析
查看>>
uboot start.s文件分析
查看>>
没有路由器的情况下,开发板,虚拟机Ubuntu,win10主机,三者也可以ping通
查看>>
本地服务方式搭建etcd集群
查看>>
安装k8s Master高可用集群
查看>>
忽略图片透明区域的事件(Flex)
查看>>
忽略图片透明区域的事件(Flex)
查看>>
AS3 Flex基础知识100条
查看>>
Flex动态获取flash资源库文件
查看>>
flex4 中创建自定义弹出窗口
查看>>
01Java基础语法-16. while循环结构
查看>>
01Java基础语法-18. 各种循环语句的区别和应用场景
查看>>
01Java基础语法-19. 循环跳转控制语句
查看>>
Django框架全面讲解 -- Form
查看>>