牛客小白赛1 F题三视图

链接:https://www.nowcoder.com/acm/contest/85/F
来源:牛客网

题目描述

Etéreo 拿出家里的许多的立方体积木,堆成了一个三维空间中的模型。既然你高考选了技术, 那想必你一定想知道,这个模型的三视图是什么吧! 
牛客小白赛1 F题三视图
图中,牛客小白赛1 F题三视图 轴、牛客小白赛1 F题三视图 轴和 牛客小白赛1 F题三视图 轴的方向已经标明。现在规定,图中的红色面为主视面,蓝色面为右视面(注意输出中应为左视而非右视),黄色面为俯视面。具体方向可以观察样例。 

输入描述:

第一行四个数 牛客小白赛1 F题三视图,表示该三维空间大小为 牛客小白赛1 F题三视图,且有 牛客小白赛1 F题三视图个立方体。 接下去 牛客小白赛1 F题三视图行,每行三个整数 牛客小白赛1 F题三视图,表示其位置坐标。

输出描述:

输出共 

牛客小白赛1 F题三视图

行,前 

牛客小白赛1 F题三视图

行每行 

牛客小白赛1 F题三视图

个字符,输出正视图及左视图,两幅图之间有一列空格;接下去输出一个空行;再接下去 

牛客小白赛1 F题三视图

行,每行 

牛客小白赛1 F题三视图

个字符,表示俯视图。其中 牛客小白赛1 F题三视图 表示空, 牛客小白赛1 F题三视图 表示有立方体。

输入例子:
2 2 2 2
1 1 1
2 2 2
输出例子:
.x .x
x. x. x.
.x

-->

示例1

输入

复制

2 2 2 2
1 1 1
2 2 2

输出

复制

.x .x
x. x. x.
.x
示例2

输入

复制

3 3 3 3
1 1 2
2 1 1
1 2 1

输出

复制

... ...
x.. x..
xx. xx. xx.
x..
...

说明

这里可以把图片拉出去放大看哦~
牛客小白赛1 F题三视图

备注:

牛客小白赛1 F题三视图


牛客小白赛1 F题三视图

 
思路分析:一开始傻乎乎的设了个唯一的三维数组,想着覆盖来解,发现很麻烦,跟随大神的脚步意识到直接建3个二维数组分别表示主视图,左视图,俯视图即可,在主视图里就不管z了,任何一个z下的x,y坐标存在都将这一点标记为有立方体,这样做就会非常简单了
然后可以注意下这个#define用法,比较方便
 #include <bits/stdc++.h>
using namespace std;
const int inf=<<;
typedef long long ll;
const double pi=acos(-);
#define mst(a,b) memset(a,b,sizeof(a))
char a[][],b[][],c[][];//分别用来保存主,左,俯视图,二维即可
int X,Y,Z,n,x,y,z;
int main(){
mst(a,'.');
mst(b,'.');
mst(c,'.');
cin>>X>>Y>>Z>>n;
while(n--){
cin>>x>>y>>z;
a[y][x]='x';
b[y][z]='x';
c[z][x]='x';
}
for(int i=Y;i>;i--,puts("")){
for(int j=;j<=X;j++) cout<<a[i][j];
cout<<" ";
for(int j=;j<=Z;j++) cout<<b[i][j];
}
puts("");
for(int i=;i<=Z;i++){
for(int j=;j<=X;j++) cout<<c[i][j];
cout<<endl;
}
return ;
}
上一篇:hd1007


下一篇:tensorflow(3):神经网络优化(ema,regularization)