> 文档中心 > NOIP 2008 普及组 立体图

NOIP 2008 普及组 立体图


b站视频

https://www.bilibili.com/video/BV1nU4y1o7VJ/

#include using namespace std;int m, n, num;char a[2000][2000];char b[6][8] = {"  +---+"," /   /|","+---+ |","|   | +","|   |/ ","+---+  "};int minx = 1000, maxy = 1000;void draw(int i, int j) {memcpy(&a[i - 0][j], &b[5 - 0][0], 5);memcpy(&a[i - 1][j], &b[5 - 1][0], 6);memcpy(&a[i - 2][j], &b[5 - 2][0], 7);memcpy(&a[i - 3][j], &b[5 - 3][0], 7);memcpy(&a[i - 4][j + 1], &b[5 - 4][1], 6);memcpy(&a[i - 5][j + 2], &b[5 - 5][2], 5);minx = min(minx, i - 5);maxy = max(maxy, j + 6);}int main() {cin >> m >> n;int x = 1000, y = 1000, p, q;for (int i = 0; i < m; i ++) {x += 2, y -= 2;for (int j = 0; j < n; j ++) {cin >> num;for (int k = 0; k < num; k ++) {draw(x - 3 * k, y + 4 * j );}}}for (int i = minx; i <= x; i ++) {for (int j = y; j <= maxy; j ++) {if (a[i][j] == 0) cout << '.';else cout << a[i][j];}cout << endl;}return 0;}