牛客网 牛客小白月赛1 F.三视图
F.三视图
这个题自己想一下三维的,正视图和左视图中y轴为行数,x轴和z轴是列数,因为中间有一列输出空格,初始化的时候就要初始化为空格,什么都不写是不对的。
俯视图中,就是z轴为行数,x轴为列数。想一下就可以了。
代码:
1 #include<iostream>
2 #include<cstring>
3 #include<cstdio>
4 #include<cmath>
5 #include<cstdlib>
6 #include<algorithm>
7 using namespace std;
8 typedef long long ll;
9 const int maxn=2000+10;
10 const int maax=1e5+10;
11 int a[maax][5];
12 char s[maxn][5*maxn],w[maxn][maxn];
13 int main(){
14 int x,y,z,n;
15 cin>>x>>y>>z>>n;
16 for(int i=0;i<n;i++){
17 for(int j=0;j<3;j++)
18 cin>>a[i][j];
19 }
20 for(int i=0;i<y;i++){
21 for(int j=0;j<x;j++)
22 s[i][j]='.';
23 }
24 for(int i=0;i<y;i++)
25 s[i][x]=' ';
26 for(int i=0;i<y;i++){
27 for(int j=x+1;j<x+z+1;j++)
28 s[i][j]='.';
29 }
30 for(int i=0;i<n;i++){
31 s[y-1-(a[i][1]-1)][a[i][0]-1]='x';
32 }
33 for(int i=0;i<n;i++){
34 s[y-1-(a[i][1]-1)][x+1+(a[i][2]-1)]='x';
35 }
36 for(int i=0;i<z;i++){
37 for(int j=0;j<x;j++)
38 w[i][j]='.';
39 }
40 for(int i=0;i<n;i++){
41 w[a[i][2]-1][a[i][0]-1]='x';
42 }
43 for(int i=0;i<y;i++){
44 for(int j=0;j<x+z+1;j++)
45 cout<<s[i][j];
46 cout<<endl;
47 }
48 cout<<endl;
49 for(int i=0;i<z;i++){
50 for(int j=0;j<x;j++)
51 cout<<w[i][j];
52 cout<<endl;
53 }
54 }