立体图

news2024/11/25 22:49:26

[NOIP2008 普及组] 立体图

题目描述

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

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

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

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

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

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

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

输入格式

第一行有用空格隔开的 2 2 2个整数 m m m n n n,表示有 m × n m \times n m×n 个格子 ( 1 ≤ m , n ≤ 50 ) (1 \le m,n \le 50) (1m,n50)

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

输出格式

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

样例 #1

样例输入 #1

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

样例输出 #1

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

提示

NOIP2008普及组第四题

#include<bits/stdc++.h>
using namespace std;
//
int h[101][101];
int z[6]={2,1,0,0,0,0},s[6]={6,6,6,6,5,4};
int maxx=0,maxy=0;
char  c[1001][1001];
char cube[10][10]={
"  +---+",
" /   /|",
"+---+ |",
"|   | +",
"|   |/",
"+---+",
};
//
void draw(int x,int y){
    for(int i=5; i>=0; i--){
        for(int j=z[i]; j<=s[i]; j++){
            c[5-i+x][y+j]=cube[i][j];
            if(5-i+x>maxx) maxx=5-i+x;
            if(j+y>maxy) maxy=j+y;
        }
    }
}
//
int main(){
    int m,n; cin>>m>>n;
    for(int i=1; i<=m; i++)
        for(int j=0; j<n; j++)
            cin>>h[i][j];
    //
    for(int i=1; i<=m; i++){
        for(int j=0; j<n; j++){
            for(int k=0; k<h[i][j]; k++){
                draw( (m-i)*2+1+3*k , (m-i)*2+1+4*j);
            }            
        }
    }
    //
    for(int i=maxx; i>=1; i--){
        for(int j=1; j<=maxy; j++)
            if( c[i][j]==0 ) cout<<".";
            else cout<<c[i][j];
    cout<<endl;
    }
    return 0;
}

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

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

相关文章

网络攻击与防御

1.什么是数据认证&#xff0c;有什么作用&#xff0c;有哪些实现的技术手段? 数字认证证书它是以数字证书为核心的加密技术可以对网络上传输的信息进行加密和解密、数字签名和签名验证&#xff0c;确保网上传递信息的安全性、完整性。 使用了数字证书&#xff0c;即使您发送的…

【Python爬虫项目实战一】获取Chatgpt3.5免费接口文末付代码(过Authorization认证)

目录 🚩前言🍑工具🍉分析流程🧅实战部分🧅🧅模拟登陆🧅🧅模拟提问请求🥒login方法🥒chatgpt方法🌰总结🚩前言 大家好!今天的目标是拿下Openmao的接口,他的接口内容和chatgpt3.5是一样的,它们的免责申明中写道:本站点基于外部API二次开发,仅供学习…

【数据结构学习2】线性表、顺序表、C/C++补充

目录线性表线性表的定义和特点线性表类型定义线性表的存储结构顺序存储结构顺序表基本操作的实现顺序表的查找算法分析&#xff1a;平均查找长度ASL(Average Search Length)顺序表的插入顺序表的删除补充 C/CC中的参数传递引用类型做形参的三点说明线性表 线性表的定义和特点 …

无需公网IP,远程连接SQL Server数据库【内网穿透】

文章目录1.前言2.本地安装和设置SQL Server2.1 SQL Server下载2.2 SQL Server本地连接测试2.3 Cpolar内网穿透的下载和安装2.3 Cpolar内网穿透的注册3.本地网页发布3.1 Cpolar云端设置3.2 Cpolar本地设置4.公网访问测试5.结语1.前言 数据库的重要性相信大家都有所了解&#xf…

gpt4人工智能怎么下载-chatgpt哪里下载

GPTChat是一种使用基于深度学习的自然语言处理模型&#xff08;GPT&#xff09;实现的智能对话系统。 GPT模型是一种Transformer模型&#xff0c;由OpenAI实现&#xff0c;可用于生成各种类型的文本&#xff0c;包括对话文本。 GPTChat通过对话实现用户与机器之间的交互。用户…

什么是美股市场?主要的美股交易市场有哪些?

美股市场就是交易股票的场所。美股交易市场不同&#xff0c;也影响着投资者在交易美股时的计划和安排。主要的美股交易市场包含哪些&#xff1f; 美股交易市场一、NYSE NYSE又称纽约证券交易所&#xff0c;是上市公司总市值第一&#xff08;2009年数据&#xff09;&#xff0c…

榜单!智能车控进入「新周期」,BCM份额TOP10供应商都有谁

作为控制车身不同功能及信号通信中转的ECU模块&#xff0c;从广义范畴来说&#xff0c;BCM&#xff08;Body Control Module&#xff09;实际上也是整车最早开始进入「域」整合的部件之一。比如&#xff0c;车身控制多功能的集成&#xff08;1.0&#xff09;、BCM网关&#xff…

Maven + Nexus 私有仓库搭建 + 项目推送 + 其他项目拉取(简记)

序 2022年是比较忙碌的一年&#xff0c;耽误了很多博客积累&#xff0c;这一年开始看的比写得多。后面也发现像原来一样的去写下来的成本太高。后面开始只做一些简记。即减少书写成本&#xff0c;也能巩固知识&#xff0c;提炼精华。 一 、Nexus下载 下载地址&#xff1a; N…

Dubbo知识【高级特性】

目录 1&#xff1a;Dubbo高级特性 1.1&#xff1a;超时与重试 什么是超时&#xff1f; 什么是重试&#xff1f; 如何配置超时与重试&#xff1a; 1.2&#xff1a;启动检查 1.3&#xff1a;多版本 1.4&#xff1a;负载均衡 1.5&#xff1a;序列化 1.6&#xff1a;地址…

夜深敲代码——记录一个优化过程

前言 最近一段时间OpenAI的热度一直不减&#xff0c;ChatGpt带来的极大便利性大家也是深有体会。荔枝也跟风搞了一个来玩玩&#xff0c;感觉还是很不错的哈哈哈哈。这不&#xff0c;最近开始刷题用ChatGpt帮忙找bug就很舒服&#xff0c;它甚至可以为我们提供优化的思路&#xf…

git使用手册——简单实用

常见命令 创建仓库 git init初始化仓库git clone拷贝一份远程仓库&#xff0c;也就是下载一个项目。提交与修改 git add添加文件到仓库git status查看仓库当前的状态&#xff0c;显示有变更的文件。git diff比较文件的不同&#xff0c;即暂存区和工作区的差异。git commit提…

RGB与YUV

什么是YUV YUV也叫YCbCr模型&#xff0c;是相对于RGB模型的一种广泛使用的颜色表示模型&#xff0c;YUV格式是1938年由一个法国通信工程师M. Georges Valensi发明的。 YUV中的Y表示亮度luminance&#xff0c;UV表示色度chrominance&#xff1b; 我们知道人眼是个复杂的器官&a…

vue2.x 学习笔记

div标签&#xff08;HTML&#xff09; div标签的作用是&#xff0c;设定字、画、表格等的摆放位置。 DIV元素&#xff0c;是用来为HTML文档内大块&#xff08;block-level&#xff09;的内容提供结构和背景的元素。 DIV标签&#xff0c;称为区隔标记。 什么是vue vue是响应式…

天猫商品详情数据接口,京东商品详情数据接口,品牌商品数据分析,品牌店铺商品数据分析,监控商品价格销量接口代码封装教程

最近做一个品牌电商公司内部ERP系统分发的采集淘宝、天猫、京东商品详情页API接口的投标工作&#xff0c;集成的接口&#xff0c;其中有一个需求就是监控品牌授权店铺的价格、销量&#xff0c;标题、主图等等&#xff0c;具体需求如下描述&#xff1a;所有授权店铺的公开数据都…

04、SpringBoot运维实用篇

一、配置文件1、临时属性设置目前我们的程序包打好了&#xff0c;可以发布了。但是程序包打好以后&#xff0c;里面的配置都已经是固定的了&#xff0c;比如配置了服务器的端口是8080。如果我要启动项目&#xff0c;发现当前我的服务器上已经有应用启动起来并且占用了8080端口&…

浅谈工厂模式

文章目录01 | 抽象工厂02 | 工厂方法03 | 未完待续创建模式在什么被创建&#xff0c;谁创建它&#xff0c;它是怎么被创建的&#xff0c;以及何时创建这些方面提供了很强的灵活性。通常创建模式允许用结构和功能差别很大的“产品”对象来配置一个系统 01 | 抽象工厂 抽象工厂模…

决策树算法介绍

决策树目录1. 决策树基础1.1 决策树定义1.2 熵以及信息熵介绍2. 决策树的划分依据2.1 信息增益2.1.1信息增益应用举例2.2 信息增益率2.2.1 信息增益率使用举例2.2.2 信息增益率使用举例22.3 基尼值和基尼指数2.3.1 基尼值和基尼指数介绍2.3.2 基尼值和基尼指数实现案例1. 决策树…

e-STUDIO2010AC•2520AC安装步骤

注意!在室内室外温差比较大的情况下,设备需要在室内静置240分钟以上才可以进行安装。

如何训练个人的ChatGpt4

如何在自己的计算机上安装类似 ChatGPT 的个人 AI 并在没有互联网的情况下运行它 个人 AI 的“第一台 PC”时刻 这是个人AI的“第一台PC”时刻&#xff0c;随之而来的是限制&#xff0c;就像在车库里生产第一台Apple 1一样。你是先驱。今天&#xff0c;任何人都可以使用私人和…

一个从培训学校走出来的测试工程师自述....

简单介绍一下我自己&#xff0c;1997年的&#xff0c;毕业一年了&#xff0c;本科生&#xff0c;专业是机械制造及其自动化。 在校度过了四年&#xff0c;毕业&#xff0c;找工作&#xff0c;填三方协议&#xff0c;体检&#xff0c;入职。我觉得我可能就这么度过我平平无奇的…