一道模拟题,个人认为这道题唯一易错的点在于输出时的顺序,理清打印的顺序即可.

#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;
    }
}