2008立体图

题目描述 Description

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

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

+---+

/   /|  高

+---+ |

|   | +

|   |/ 宽

+---+

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

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

..+---+---+

./   /   /|

+---+---+ |

|   |   | +

|   |   |/.

+---+---+..

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

..+---+

./   /|

+---+ |

|   | +

|   |/|

+---+ |

|   | +

|   |/.

+---+..

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

….+---+

…/   /|

..+---+ |

./   /| +

+---+ |/.

|   | +..

|   |/…

+---+….

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

输入描述 Input Description

输入文件drawing.in第一行有用空格隔开的两个整数m和n,表示有m*n个格子(1<=m,n<=50)。

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

输出描述 Output Description

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

样例输入 Sample Input

3 4

2 2 1 2

2 2 1 1

3 2 1 2

样例输出 Sample Output

......+---+---+...+---+

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

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

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

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

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

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

|    |   | +-|    | + |/.

|    |   |/  |    |/| +..

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

|    |   |    |   | +....

|    |   |    |   |/.....

+---+---+---+---+......

数据范围及提示 Data Size & Hint

题解:

模拟。

这是一道比较难的模拟,就是每一个都模拟下去(他又上下和左右的格式了,仿照一下就行了),具体请看程序。

var n,m,i,j,k,ii,jj,x,y:longint;

ans:array[0..1001,0..1001]of char;

a:array[0..51,0..51]of longint;

s:array[1..6,1..7]of char=

((chr(33),chr(33),‘+‘,‘-‘,‘-‘,‘-‘,‘+‘),

(chr(33),‘/‘,‘ ‘,‘ ‘,‘ ‘,‘/‘,‘|‘),

(‘+‘,‘-‘,‘-‘,‘-‘,‘+‘,‘ ‘,‘|‘),

(‘|‘,‘ ‘,‘ ‘,‘ ‘,‘|‘,‘ ‘,‘+‘),

(‘|‘,‘ ‘,‘ ‘,‘ ‘,‘|‘,‘/‘,chr(33)),

(‘+‘,‘-‘,‘-‘,‘-‘,‘+‘,chr(33),chr(33)));

begin

readln(n,m);

for i:=1 to n do

for j:=1 to m do read(a[i,j]);

for i:=1 to n do

for j:=1 to m do

if (n-i)*2+(a[i,j]+1)*3>x then x:=(n-i)*2+(a[i,j]+1)*3;

y:=m*4+n*2+1;

for i:=1 to x do

for j:=1 to y do ans[i,j]:=‘.‘;

for i:=1 to n do

for j:=1 to m do

for k:=1 to a[i,j] do

for ii:=1 to 6 do

for jj:=1 to 7 do

if s[6-ii+1,jj]<>chr(33) then

ans[(n-i)*2+(k-1)*3+ii,(n-i)*2+(j-1)*4+jj]:=s[6-ii+1,jj];

for i:=x downto 1 do

begin

for j:=1 to y do write(ans[i,j]);

writeln;

end;

end.

时间: 2024-10-12 21:38:20

2008立体图的相关文章

Cisco ISE + Windows Server 2008 实验

实验说明:此实验参考生产环境中某部分环境搭建而成,此环境Windows Server 2008用于登录用户.MAC等账号的认证,Cisco ISE用于认证授权等,无线部分利用VMWLC + Cisco 1702AP测试测试.因为为实验环境,整体网络架构所有节点为单点:Cisco ISE部分功能没有应用上,如测试PC端的补丁.防毒补丁.设备认证等(此部分在生产环境上实施),下图为此实验的网络架构图. Windows AD:  172.16.1.199 Cisco VMISE: 172.16.1.1

Windows 2008 R2安装wamp server

一.平台windows 2008 R2,安装驱动,office 2010: 二.安装SP1补丁包,下载地址https://www.microsoft.com/zh-cn/download/details.aspx?id=5842 具体见附件1: 三.安装Microsoft Visual C++ 2015运行库 14.0.23026.0: 四.安装wamp server 3.0.6.即可

Install Exchange Server 2013 on Windows Server 2008

OS 要求 Exchange Server 2013可以部署在Windows Server 2012的平台也可以部署在Windows Server 2008 R2的平台.如果部署在Windows Server 2008 R2平台要求操作系统版本为Windows Server 2008 R2 SP1的版本? 安装服务器角色 : PowerShell中执行如下命令 , 打开Windows PowerShell 运行如下命令来加载服务器管理器模块 ? Import-Module ServerMana

Windows server 2008 R2 AD DS搭建(额外DNS)

使用额外的DNS服务器搭建AD DS服务器,AD DS服务器本身不是DNS服务器. 先决条件: 1台DNS服务器,1台AD DS服务器: DNS服务器开启动态更新: 部署参考步骤如下: 1.DNS服务器信息检查 2.AD DS服务器信息检查 3.在DNS服务器上面运行dnsmgmt.msc,确定 4.右击"正向查找区域",选择"新建区域" 5.选择下一步 6.选择"主要区域" 7.输入域名"contoso.local",下一步

虚拟化基础架构Windows 2008篇之5-安装Windows部署服务

看完文章,请顺手投我一票(王春海),谢谢 http://edu.51cto.com/activityvote/voteRanking 京东6.18结束了,IT人自己的6.18来了!!!51CTO学院3周年(6月30日-7月1日)70000课程不止5折!http://edu.51cto.com/lecturer/user_id-225186.html 在组建云计算数据中心时,会经常安装操作系统.无论是云计算的基础平台Hyper-V Server 2008 R2.Hyper-V Server 201

Windows 2008 R2 密码恢复

主题: Windows 2008 R2 密码恢复 准备工具: Windows2008 R2 安装光盘 ERDCommander Boot Media Wizard Tool (MsDaRT6.5)       http://www.xdowns.com/soft/6/65/2012/Soft_92944.html 操作步骤: 安装:MsDaRT6.5,生成工具ERD 使用ERD,制作启动光盘或U盘 使用制作的光盘或U盘来破解密码 详细参考下文: http://os.51cto.com/art/2

安装SQl 2008为SQL Server代理服务提供的凭据无效

sql server 2008 代理服务提供的凭据无效 sql server 2008 代理服务提供的凭据无效 在Windows Server 2008安装SQL Server 2008出现的问题: 安装时在"服务器配置"环节出现以下问题: 为sql server代理服务提供的凭据无效 为sql server服务指定的凭据无效 为analysis services服务提供的凭据无效 为reporting services服务提供的凭据无效 为integration services服务

SQL Server 2008登录错误:无法连接到(local)解决方法

在一些朋友安装完SQL Server 2008之后大多会遇到连接出错的问题比如:SQL Server 2008登录错误:无法连接到(local)等等相关问题,本文将详细介绍解决方法,需要的朋友可以参考下 在一些朋友安装完SQL Server 2008之后大多会遇到连接出错的问题.特别对于我们这样的新手而言简直郁闷的要死,好不容易装玩了又出现了问题.此篇文章意在解决安装步骤没有问题,但安装后无法登录的问题. 在解决问题之前请朋友们打开服务窗口,看“SQL Server”主服务是否打开,如下图. 若

atitit.Windows Server 2003 2008 2012系统的新特性 attilax 总结

atitit.Windows Server 2003  2008  2012系统的新特性 attilax 总结 1. Windows Server 2008 新特性也可以归纳为4个方面. 1 2. 相比Windows Server 08,R2 2 3. win 2012  新特性 2 4. 参考 6 1. Windows Server 2008 新特性也可以归纳为4个方面. 即将发布的Windows Server 2008是企业级的应用平台,可以为CRM等企业级应用提供更好更强的支撑,其新特性也