#10000037. 【NOIP 2008 普及组】立体图(drawing)

内存限制:50 MiB 时间限制:1000 ms 输入文件:drawing.in 输出文件:drawing.out
题目类型:传统 评测方式:文本比较
上传者: Holmium_Oxide

题目描述

一.题目概览

中文题目名称 立体图
英文题目名称
可执行文件名
输入文件名
输出文件名
每个测试点时限  秒
测试点数目
每个测试点分值
比较方式 全文比较
题目类型 传统

二.提交源程序文件名

对于 pascal 语言
对于 C 语言
对于 C++ 语言

四.运行内存限制

运行内存上限

4.立体图

【问题描述】

小渊是个聪明的孩子,他经常会给周围的小朋友们讲些自己认为有趣的内容。最近,他准备给小朋友们讲解立体图,请你帮他画出立体图。

小渊有一块面积为 的矩形区域,上面有 个边长为 的格子,每个格子上堆了一些同样大小的吉姆(积木的长宽高都是 ),小渊想请你打印出这些格子的立体图。我们定义每个积木为如下格式,并且不会做任何翻转旋转,只会严格以这一种形式摆放:

每个顶点用 个加号’’表示,长用 个”“表示,宽用 个””表示,高用两个””表示。字符’’ ‘‘’’ ‘’的 ASCII 码分别为 。字符’’(ASCII 码 )需要作为背景输出,即立体图里的空白部分需要用’’代替。立体图的画法如下面的规则:

若两块积木左右相邻图示为:

若两块积木上下相邻图示为:

若两块积木前后相邻图示为:

立体图中,定义位于第 的格子(即第 行第 列的格子)上面自底向上的第一块积木(即最下面的一块积木)的左下角顶点为整张图最左下角的点。

输入格式

【输入】

输入文件 第一行有用空格隔开的两个整数 ,表示有 个格子()。

接下来的 行,是一个 的矩阵,每行有 个用空格隔开的整数,其中第 行第 列上的整数表示第 行第 列的格子上摞有多少个积木( 每个格子上的积木数 )。

输出格式

【输出】

输出文件 中包含题目要求的立体图,是一个 列的字符矩阵,其中 表示最少需要 列才能按规定输出立体图。

样例

【输入输出样例】

drawing.in
drawing.out

3 4
2 2 1 2
2 2 1 1
3 2 1 2
      

......+---+---+...+---+
..+---+  /   /|../   /|
./   /|-+---+ |.+---+ |
+---+ |/   /| +-|   | +
|   | +---+ |/+---+ |/|
|   |/   /| +/   /|-+ |
+---+---+ |/+---+ |/| +
|   |   | +-|   | + |/.
|   |   |/  |   |/| +..
+---+---+---+---+ |/...
|   |   |   |   | +....
|   |   |   |   |/.....
+---+---+---+---+......