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列才能按规定输出立体图。
输入输出样例
3 4 2 2 1 2 2 2 1 1 3 2 1 2
......+---+---+...+---+ ..+---+ / /|../ /| ./ /|-+---+ |.+---+ | +---+ |/ /| +-| | + | | +---+ |/+---+ |/| | |/ /| +/ /|-+ | +---+---+ |/+---+ |/| + | | | +-| | + |/. | | |/ | |-| +.. +---+---+---+---+ |/... | | | | | +.... | | | | |/..... +---+---+---+---+......
说明
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
NOIP2008 普及组T4 立体图 解题报告-S.B.S.(施工未完成)相关推荐
- NOIP 2008 普及组初赛试题 解题报告、题解及选择题思路,高质量
做题:https://ti.luogu.com.cn/problemset/1003 选择题 第 1 题 微型计算机中,控制器的基本功能是( A). A. 控制机器各个部件协调工作 B. 实现算术运算 ...
- P1058 [NOIP2008 普及组] 立体图
题目描述 小渊是个聪明的孩子,他经常会给周围的小朋友们将写自己认为有趣的内容.最近,他准备给小朋友们讲解立体图,请你帮他画出立体图. 小渊有一块面积为m \times nm×n的矩形区域,上面有m \ ...
- noip2008普及组4题题解-rLq
(啊啊啊终于补到了今天的作业了) 本题地址: http://www.luogu.org/problem/show?pid=1058 题目描述 小渊是个聪明的孩子,他经常会给周围的小朋友们将写自己认为有 ...
- 信息学奥赛一本通 1942:【08NOIP普及组】ISBN号码 | OpenJudge NOI 1.7 29:ISBN号码 | 洛谷 P1055 [NOIP2008 普及组] ISBN 号码
[题目链接] ybt 1942:[08NOIP普及组]ISBN号码 OpenJudge NOI 1.7 29:ISBN号码 洛谷 P1055 [NOIP2008 普及组] ISBN 号码 [题目考点] ...
- 糖果(2019第十届蓝桥杯省赛C++A组I题) 解题报告(状压dp) Apare_xzc
糖果(2019第十届蓝桥杯省赛C++A组I题) 解题报告(状压dp) xzc 2019/4/5 试题 I: 糖果 时间限制: 1.0s 内存限制: 256.0MB 本题总分:25分 [问题描述] ...
- NOIP2012 普及组 T4 文化之旅
文化之旅 (NOIP2012 普及组 T4 ) 题目描述 有一位使者要游历各国,他每到一个国家,都能学到一种文化,但他不愿意学习任何一种文化超过一次(即如果他学习了某种文化,则他就不能到达其他有这种文 ...
- P1055 [NOIP2008 普及组] ISBN 号码 每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括99位数字、11位识别码和33位分隔符,其规定格式如x-xxx-xxxxx
文章目录 P1055 [NOIP2008 普及组] 题解 Java 代码 关键分析 P1055 [NOIP2008 普及组] 题解 题目链接 Java 代码 package luoguTest;imp ...
- 传球游戏【NOIP2008普及组】
题目:传球游戏[NOIP2008普及组] 题目描述 上体育课的时候,小蛮的老师经常带着同学们一起做游戏.这次,老师带着同学们一起做传球游戏. 游戏规则是这样的:n个同学站成一个圆圈,其中的一个同学手里 ...
- 13-luogu-P1055 [NOIP2008 普及组] ISBN 号码
文章目录 [NOIP2008 普及组] ISBN 号码 问题 题目描述 输入格式 输出格式 样例 样例输入 样例输出 样例 样例输入 样例输出 #2 提示 小白代码 多次提交,解决 "X&q ...
最新文章
- YCProgress自定义百分比进度条
- MM32F3277 MicroPython移植过程中对应的接口文件
- 深入Phtread(三):线程的同步-Condition Variables
- maven项目project facets中是2.3调整为3.0的解决办法
- Python中的if __name__ == ‘__main__‘
- SNMP监控一些常用OID的总结
- deepin深度启动盘制作工具下载地址
- Chrome安装路径
- leetcode113. 路径总和 II
- 为什么Java、Python会成为程序员最害怕的编程语言?
- C语言编程蛟龙转身,[蓝桥杯][2014年第五届真题]排列序数-题解(C语言代码)
- 测试基础【第七篇】测试报告
- oracle安装实验,Oracle之课程实验一(安装oracle)
- 博客园 编程基础 精华
- RGBA转换成RGB
- vue划入划出事件_基于Vue.js中对鼠标划过事件的处理方式详解
- TE波TM波和TEM波波阻抗
- 学UI设计出来可以从事什么工作?
- 中国货币政策的动态有效性研究--基于 TVP-SV-FAVAR 模型的实证分析
- Unity中模型的面数问题
热门文章
- deepin下Clion连接mysql_CLion如何添加依赖库 ? 需要把mysql/Connector c++放入 用cpp连接数据库...
- 我的python学习笔记全集_我的python学习笔记
- python2.7输入函数_Python2.7的用户输入函数有问题,无法让这些输入与程序一起工作...
- Linux GRUB 引导Win 7 ---- error: invalid EFI file path
- leetcode 17. 电话号码的字母组合 思考分析
- Java Date toString()方法与示例
- nginx php fpm 日志,nginx下php-fpm不记录php报错日志怎么办?
- input 0.1无法相加_你真的知道0.1+0.2为何不等于0.3吗?
- koa2 mysql 中间件_Koa2第二篇:中间件
- Linux_linux常用工具------进度条程序