NOIP2008 普及组T4 立体图 解题报告-S.B.S.(施工未完成)

题目描述

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

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

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

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

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

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

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

输入输出格式

输入格式:

 

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

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

 

输出格式:

 

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

 

输入输出样例

输入样例#1:
3 4
2 2 1 2
2 2 1 1
3 2 1 2
输出样例#1:
......+---+---+...+---+
..+---+  /   /|../   /|
./   /|-+---+ |.+---+ |
+---+ |/   /| +-|   | +
|   | +---+ |/+---+ |/|
|   |/   /| +/   /|-+ |
+---+---+ |/+---+ |/| +
|   |   | +-|   | + |/.
|   |   |/  |   |-| +..
+---+---+---+---+ |/...
|   |   |   |   | +....
|   |   |   |   |/.....
+---+---+---+---+......

说明

NOIP2008普及组第四题

---------------------------------我是分割线------------------------------------------------------------------

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<cmath>
 5 #include<algorithm>
 6 #include<queue>
 7 #include<cstdlib>
 8 using namespace std;
 9 int num[51][51]={{0}};
10 int high=-99999,wide=-99999;
11 char map[301][301]={{'.'}};
12 int read(){
13     int x=0,f=1;char ch=getchar();
14     while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
15     while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
16     return x*f;
17 }
18 void print(int,int);
19 int main()
20 {
21     std::ios::sync_with_stdio(false);
22     int n,m;
23     cin>>m>>n;
24     wide=4*n+2*m+1;
25     for(int i=1;i<=m;i++)
26      for(int j=1;j<=n;j++)
27     {
28             cin>>num[i][j]; 
29             high=max(high,num[i][j]*3+2*(m-i+1)+1);
30     }
31     for(int i=1;i<=m;i++) 
32      for(int j=1;j<=n;j++) 
33       for(int k=0;k<num[i][j];k++)
34       {
35             int x=high-3*(k+2)-2*(m-i)+1;
36             int y=4*j+2*(m-i-1)-1;
37             print(x,y); 
38       }
39     for(int i=1;i<=high;i++)
40     {
41         for(int j=1;j<=wide;j++)
42          cout<<map[i][j];
43         cout<<endl;  
44     }
45     return 0;
46 }
47 void print(int a,int b){
48     int x,y;
49     x=a+3;y=b;
50     map[x][y]='+';
51     map[x][y+1]='-';
52     map[x][y+2]='-';
53     map[x][y+3]='-';
54     map[x][y+4]='+';
55     map[x-1][y]='|';
56     map[x-1][y+1]=' ';
57     map[x-1][y+2]=' ';
58     map[x-1][y+3]=' ';
59     map[x-1][y+4]='|';
60     map[x-1][y+5]='/';
61     map[x-2][y]='|';
62     map[x-2][y+1]=' ';
63     map[x-2][y+2]=' ';
64     map[x-2][y+3]=' ';
65     map[x-2][y+4]='|';
66     map[x-2][y+5]=' ';
67     map[x-2][y+6]='+';
68     map[x-3][y]='+';
69     map[x-3][y+1]='-';
70     map[x-3][y+2]='-';
71     map[x-3][y+3]='-';
72     map[x-3][y+4]='+';
73     map[x-3][y+5]=' ';
74     map[x-3][y+6]='|';
75     map[x-4][y+1]='/';
76     map[x-4][y+2]=' ';
77     map[x-4][y+3]=' ';
78     map[x-4][y+4]=' ';
79     map[x-4][y+5]='/';
80     map[x-4][y+6]='|';
81     map[x-5][y+2]='+';
82     map[x-5][y+3]='-';
83     map[x-5][y+4]='-';
84     map[x-5][y+5]='-';
85     map[x-5][y+6]='+';
86     return;
87 }
View Code

 

转载于:https://www.cnblogs.com/SBSOI/p/5575006.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/396117.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HBase基础知识(三):HBase架构进阶、读写流程、MemStoreFlush、StoreFile Compaction、Region Split

1. 架构原理 1&#xff09;StoreFile 保存实际数据的物理文件&#xff0c;StoreFile以HFile的形式存储在HDFS上。每个Store会有一个或多个StoreFile&#xff08;HFile&#xff09;&#xff0c;数据在每个StoreFile中都是有序的。 2&#xff09;MemStore 写缓存&#xff0c;由于…

第一章节测试

大家在做第一章测试题时&#xff0c;需要复习如下相关知识点&#xff1a;编译型VS解释型、变量名规范、数据类型、程序交互、格式化输出、运算符、流程控制。1.简述编译型与解释型语言的区别&#xff0c;且分别列出你知道的那些语言属于编译型&#xff0c;哪些属于解释型。2.执…

VS2015升级Update2之后Cordova程序提示:此应用程序无法在此电脑上运行

VS2015在升级到Update2之后&#xff0c;有可能出现如下异常&#xff0c;在运行Cordova项目时提示&#xff1a; 查看输出面板会有乱码错误信息&#xff1a; 出现此问题的原因是在于npm程序损坏了。vs调用的npm程序并不是在node安装目录下的npm&#xff0c;而是在&#xff1a; C:…

双鉴探测器是哪两种探测方式结合_老师傅带你看懂火灾探测器的种类和基本原理,看完涨知识了...

为什么极早期的火灾探测十分关键&#xff1f;火灾的产生我们生活的环境中充满着大量的可燃物质&#xff0c;空气中的氧气含量通常也足够满足燃烧条件。但是还有另外一个形成火灾的条件就是&#xff1a;点火能量必须可以驱使氧化的过程开始。点火能量源可以是多种多样的&#xf…

分析不同类型页面渲染过程

现在让我们看看浏览器从网络上加载资源所耗费的时间&#xff08;我们忽略从缓存以及从CDN等中间商网络上加载资源&#xff09;&#xff0c;我们首先要知道的是&#xff1a; 一个到无服务的网路往返 (传播延迟) 大约100ms服务器对于HTML文档的响应大约100ms&#xff0c;对于其他…

ImageLoader加载图片

先导universal-image-loader-1.9.3包 在application配置 android:name".MyApplication" intent权限 1 package com.ch.day13_imageloaderdemo;2 3 import java.io.File;4 5 import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiscCache; 6 impor…

Access denied for user 'root'@'localhost' (using password: YES) 问题解决小记

初学php&#xff0c;按照视频安装后好mysql后 终端运行命令 mysql -u root -p 然后输入安装mysql时输入的密码六个1&#xff0c;会报这样的错误&#xff1a;Access denied for user rootlocalhost (using password: YES) &#xff1b; 百度了一大堆&#xff0c;大海捞针一般找…

创业者具备的五大技能_一、如今大学生创业需要具备哪些知识与技能?

我参加过两次互联网&#xff0b;大赛&#xff0c;分别获得过省赛的金奖与银奖&#xff0c;还曾参加山东省大大小小比赛26场&#xff0c;金奖累计获得12次。对当代创业的大学生所应具备哪些基本素质深有体会。&#xff08;1&#xff09;技能&#xff1a;1、自我认知及科学规划能…

BZOJ3387栅栏行动

首先&#xff0c;很容易想到Dp。设f[i][0]表示第i个栅栏走左边的最短路&#xff0c;f[i][1]表示第i个栅栏走右边的最短路。 所以&#xff0c;我们要找一个刚好在第i个栅栏的左右边界下面的栅栏。如图所示&#xff1a; 则有&#xff1a; f[i][0] min(f[k][0] |Left[i] - Left[…

小程序沉浸式_古北水镇红叶祭嵌入戏精学院 全新文旅沉浸模式让游客嗨起来...

2020年10月17日-24日&#xff0c;古北水镇第二届红叶祭火热来袭。今年除了“超级漫展二次元度假”的模式&#xff0c;古北水镇与顶级沉浸互动体验运营方——INX戏精学院合作&#xff0c;在深度体验空间的同时&#xff0c;加入了互动式的实景游戏体验&#xff0c;通过演员互动&a…

又拍云刘平阳,理性竞争下的技术品牌提升之道

云服务市场趋渐平稳&#xff0c;在这种情况下&#xff0c;就需要通过对某一项技术的深入应用来实现服务的精致化。同时&#xff0c;对品牌的打造和包装也必不可少。\\又拍云在2010年开始提供云服务&#xff0c;经过多年的发展&#xff0c;以及市场策略的转变&#xff0c;决定对…

iOS开发简单高效的数据存储

在iOS开发过程中&#xff0c;不管是做什么应用&#xff0c;都会碰到数据保存的问题&#xff0c;你是用什么方法来持久保存数据的&#xff1f;这是在几乎每一次关于iOS技术的交流或讨论都会被提到的问题&#xff0c;而且大家对这个问题的热情持续高涨。本文主要从概念上把“数据…

回滚机制_【巨杉数据库SequoiaDB】巨杉 Tech | 并发性与锁机制解析与实践

01概述数据库是一个多用户使用的共享资源。当多个用户并发地存取数据时&#xff0c;在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据&#xff0c;破坏数据库的一致性。加锁是实现数据库并发控制的一个非常重要的技术。…

Android系统源码学习——源码目录结构介绍

2019独角兽企业重金招聘Python工程师标准>>> Android 4.0源码目录结构: 本文介绍Android源码目录结构&#xff0c;以便读者理清Android编译系统核心代码在Android源代码的位置。 Android源码体积非常庞大&#xff0c;由Dalvik虚拟机、Linux内核、编译系统、框架代码…

简答题c语言文件操作顺序,计算机基础与程序设计2012年4月真题试题(02275)

计算机基础与程序设计2012年4月真题试题与答案解析(02275)计算机基础与程序设计2012年4月真题试题与答案解析(02275)&#xff0c;本试卷总共100分。一、单项选择题(本大题共20小题.每小题1分&#xff0c;共20分)在每小题列出的四个备选项中只有一个是符合题目要求的&#xff0c…

汇编实验3

1.运行如下代码&#xff1a; assume cs:codecode segment mov ah,2 mov dl,3 add dl,30h int 21h mov ah,2 mov dl,6 add dl,30h int 21h mov ah,4ch int 21hcode endsend 进行汇编运行之后结果为&#xff1a; 将第四行和第九行的寄存器dl的值修改之后代码如下&#xff1a; a…

听了一堂《**学院》的课,我也是醉了

这还是首席讲师的ppt&#xff0c;这说话咋感觉&#xff0c;不像是技术出身&#xff0c;反倒是MongoDB的销售人员呢。 这说话&#xff0c;不大讲相对&#xff0c;净他妈的 绝对&#xff0c;这水平&#xff0c;我真醉了。 这牛逼吹得&#xff0c;啧啧啧。 我还是看书吧。 转载于:…

appium 环境搭建(不推荐安装此版本appium,推荐安装appium desktop)

一&#xff1a;安装node.js 1、双击这个软件 2、一键安装&#xff0c;全都下一步&#xff0c;不要私自更改安装路径 3、打开cmd&#xff0c;输入npm&#xff0c;出现如下截图表示成功 二&#xff1a;安装appium 1、双击appium-installer.exe 2、一键安装&#xff0c;全都下一步…

二级c语言上机题库及解析,2013年计算机二级C语言上机题库及答案解析(3)

填空题给定程序中&#xff0c;函数fun的功能是:在形参ss所指字符串数组中&#xff0c;查找含有形参substr所指子串的所有字符串并输出&#xff0c;若没找到则输出相应信息。ss所指字符串数组中共有N个字符串&#xff0c;且串长小于M。程序中库函数strstr(s1, s2)的功能是在 s1串…

js 数组遍历符合条件跳出循环体_C++模拟面试:从数组“紧凑”操作说开来

面试官自来也去掉一个字符串中的空格。假设用C语言来解答&#xff0c;字符串是char数组。O(n)时间复杂度实现不难&#xff0c;比如额外申请一个新数组&#xff0c;然后遍历一遍字符串&#xff0c;将符合条件的字符存储到新数组中&#xff0c;实现起来很简单。但这显然不能让面试…