一道模拟题,个人认为这道题唯一易错的点在于输出时的顺序,理清打印的顺序即可.
#include<bits/stdc++.h>
using namespace std;
struct cube {
int x;
int y;
int z;
};
struct pos {
int x;
int y;
};
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int x, y, z, n;
cin >> x >> y >> z >> n;
int f[x][z];
int f1[x][y];
int f2[z][y];
//初始化
for (int i = 0; i < x; i++) {
for (int j = 0; j < y; j++) {
f1[i][j] = 0;
}
for (int j = 0; j < z; j++) {
f[i][j] = 0;
}
}
for (int i = 0; i < z; i++) {
for (int j = 0; j < y; j++) {
f2[i][j] = 0;
}
}
vector<cube>a(n);
for (int i = 0; i < n; i++) {
cin >> a[i].x >> a[i].y >> a[i].z;
f[a[i].x - 1][a[i].z - 1] = 1;
f1[a[i].x - 1][a[i].y - 1] = 1;
f2[a[i].z - 1][a[i].y - 1] = 1;
}
//输出正视图和左视图:
int cy=0;
for (int j = y-1; j >=0; j--) {//要注意不同视角观看的时候输出顺序的差异
//正式图看的是yox平面,应该先输出靠近坐标轴的位置,应该从上往下输出,从左往右输出
for (int i = 0; i < x; i++) {//正视图
if (f1[i][j] == 1) {
cout << "x";
} else {
cout << ".";
}
}
cout << " ";
//左视图是yoz平面,同上,即从上往下输出,从左往右输出
for (int i = 0; i <z; i++) {//左视图
if (f2[i][j] == 1) {
cout << "x";
} else {
cout << ".";
}
}
cout<<endl;
}
cout << endl;
//输出俯视图:
for (int i = 0; i < z; i++) {
for (int j = 0; j < x; j++) {
if (f[j][i] == 1) {
cout << "x";
} else {
cout << ".";
}
}
cout << endl;
}
}

京公网安备 11010502036488号