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,一经查实,立即删除!

相关文章

及时沟通的重要性_沟通与代码同样重要

及时沟通的重要性by Andrea Goulet通过安德烈古莱特(Andrea Goulet) 沟通与代码同样重要 (Communication Is Just As Important As Code) This past weekend, I had the pleasure of being the closing keynote at Ruby Nation. I expanded on one of the core values at Corg…

linux telnet smtp,如何使用Telnet测试IMAP与SMTP

1 前言笔者有时候调试邮件服务器需要使用Telnet直接去操纵IMAP与SMTP的服务&#xff0c;所以整理此文。2 最佳实践2.1 IMAP服务2.1.1 使用Telnet链接IMAP服务telnet imap.cmdschool.org 143信息显示如下&#xff0c;Trying 113.96.209.109...Connected to imap.cmdschool.org.E…

圆柱体积怎么算立方公式_圆柱体积公式怎么算

圆柱的体积计算公式同仁实验学校各年级组备课教师教案教案设计 课题 教学内容年级 六年级 科目 圆柱体积的计算公式数学教案类型新授P25 页例 5 及补充例题&#xff0c;完成“做一做”及练习五第 1~3 题。授课人1、通过用切割拼合的方法借助长方体的体积公式推导出圆柱的体积公…

Python学习笔记7:函数对象及函数对象作參数

一、lambda函数比如&#xff1a;fun1 lambda x,y: x y print fun1(3,4)输出&#xff1a;7lambda生成一个函数对象。该函数參数为x,y&#xff0c;返回值为xy。函数对象赋给func。func的调用与正常函数无异。上面的代码等价于&#xff1a;def fun2(x, y):return x y二、函数作…

github 建立_建立在线社区:GitHub教师

github 建立by Gitter通过吉特 建立在线社区&#xff1a;GitHub教师 (Building Online Communities: GitHub Teacher) We talked to the GitHub Training team about the free GitHub courses they offer to both developers and non-developers, as well as about the commun…

广数25i系统倒刀回刀m代码_广州数控系统GSK25i参数.pdf

GSK25i 铣床加工中心数控系统 使用手册(第 3 分册: 参数篇)在本使用手册中&#xff0c;我们将尽力叙述各种与该系统操作相关的事项。限于篇幅限制及产品具体使用等原因&#xff0c;不可能对系统中所有不必做和/或不能做的操作进行详细的叙述。因此&#xff0c;本使用手册中没有…

linux离线安装rjava,无法在ubuntu系统上安装rJava

我已经看过一些与此相关的帖子…但是所有建议的解决方案看起来似乎不工作….我在EC2实例中运行R&#xff0c;并运行以下命令来尝试安装rJava但无效…任何帮助将不胜感激。> install.packages("rJava")Installing package(s) into ‘/home/ubuntu/R/library’(as ‘…

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;由于…

CentOS6.7-64bit编译hadoop2.6.4

1.下载maven&#xff08;apache-maven-3.3.3-bin.tar.gz&#xff09; http://archive.apache.org/dist/maven/maven-3/3.3.3/binaries/apache-maven-3.3.3-bin.tar.gz 2.安装maven tar -zxvf apache-maven-3.3.3-bin.tar.gz -C /usr/local 3.添加环境变量 vim /etc/profileexpo…

第一章节测试

大家在做第一章测试题时&#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:…

gitter 卸载_最佳Gitter渠道:学习编码

gitter 卸载by Gitter通过吉特 最佳Gitter渠道&#xff1a;学习编码 (Best Gitter channels for: Learning to Code) If you’re learning to code in 2016, you’re in luck — thanks to a huge range of helpful websites, MOOCs, books, and learners’ communities, you’…

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

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

JS入门熟知

JS是面向对象的语言 封装继承多态聚集&#xff08;对象中具有引用其他对象的能力&#xff09;JS使用中绝大多数情况不需要进行面向对象的设计,很多情况是使用已经设计好,准备好的对象,基于对象的语言. JS的使用&#xff08;引入&#xff09; jsp、html中直接在script标签中书写…

c语言专业实习报告,C语言个人实习报告(范文1)

《C语言个人实习报告.doc》由会员分享&#xff0c;可免费在线阅读全文&#xff0c;更多与《C语言个人实习报告》相关文档资源请在帮帮文库(www.woc88.com)数亿文档库存里搜索。1、好的学习兴趣&#xff0c;独立的编程风格。(组C语言实训报告课题名称&#xff1a;通讯录管理系统…

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

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

引入 javascript_在您JavaScript项目中引入类型安全性? 再想一想

引入 javascriptby James Wright詹姆斯赖特(James Wright) 在您JavaScript项目中引入类型安全性&#xff1f; 再想一想 (Introducing Type Safety To Your JavaScript Project? Think Again) 更新— 2017年2月1日 (Update — 1st February 2017) I’ve heard various counter…

劣币驱逐良币通俗解释_如何通俗理解劣币驱逐良币的问题,同时如何扭转这个现象?...

以牛奶为例谈劣币驱逐良币。【原来】大家都卖的纯正的纯牛奶&#xff0c;因为。牛奶的来源和生产工艺基本上都差不多&#xff0c;所以说产品的品质也没有什么大的差异。【后来】奶制品企业为了争夺市场开始打价格战&#xff0c;你卖5块我就卖4块&#xff0c;你卖4块我就卖3块5&…

c语言里 如何取得线程的lpparameter'参数,请问线程函数如何访问对话框类中的变量...

我线程函数定义在对话框类的实现文件中需要访问对话框类头文件中声明的变量怎么才可以&#xff1f;i_noname(晚九朝五) 于 2005-9-15 16:14:25DWORD WINAPI Proc(LPVOID lpParameter ){CDialog *pDlg (CDialog *)lpParameter;...}启用线程时把对话框指针传进去AfxBeginThread(…

Android内存优化——内存泄露检测分析方法

上一篇文章总结了一些常见的内存泄露场景及优化方案&#xff0c;这篇文章继续总结内存泄露的一些常用的检测和分析方法。 Lint代码检查 AndroidStudio自动Lint代码检查工具&#xff0c;一些常见的代码警告Lint工具都会给我们提示。使用也比较简单&#xff1a; Analyze —> I…