打印十字图 queue 搞定
题目描述
小明为某机构设计了一个十字型的徽标(并非红十字会啊),如下所示:
..$$$$$$$$$$$$$..
..$...........$..
$$$.$$$$$$$$$.$$$
$...$.......$...$
$.$$$.$$$$$.$$$.$
$.$...$...$...$.$
$.$.$$$.$.$$$.$.$
$.$.$...$...$.$.$
$.$.$.$$$$$.$.$.$
$.$.$...$...$.$.$
$.$.$$$.$.$$$.$.$
$.$...$...$...$.$
$.$$$.$$$$$.$$$.$
$...$.......$...$
$$$.$$$$$$$$$.$$$
..$...........$..
..$$$$$$$$$$$$$..
对方同时也需要在电脑dos窗口中以字符的形式输出该标志,并能任意控制层数。
输入格式
一个正整数 n (n<30) 表示要求打印图形的层数。
输出
对应包围层数的该标志。
样例输入
3
样例输出
..$$$$$$$$$$$$$..
..$...........$..
$$$.$$$$$$$$$.$$$
$...$.......$...$
$.$$$.$$$$$.$$$.$
$.$...$...$...$.$
$.$.$$$.$.$$$.$.$
$.$.$...$...$.$.$
$.$.$.$$$$$.$.$.$
$.$.$...$...$.$.$
$.$.$$$.$.$$$.$.$
$.$...$...$...$.$
$.$$$.$$$$$.$$$.$
$...$.......$...$
$$$.$$$$$$$$$.$$$
..$...........$..
..$$$$$$$$$$$$$..
最近发现对容器比较敏感,老往那方面想,哈哈,又解决一个:还需要八方向搜索
#include <iostream>
#include <algorithm>
#include <queue>
#include <cstring>
using namespace std;
int dir[][]={{-,-},{-,},{-,},{,-},{,},{,-},{,},{,}};//八方向搜索
char s[][];
struct state
{
int x,y;
}num[],ms,me;
queue < state >nnn;
queue < state >mmm;
void fun(int a,int b)//存入基本十字架
{
s[a][b]='$';
ms.x=a;ms.y=b;
nnn.push(ms);
s[a][b+]='$';s[a][b+]='$';s[a][b-]='$';s[a][b-]='$';
ms.x=a;ms.y=b+;nnn.push(ms);ms.x=a;ms.y=b+;nnn.push(ms);ms.x=a;ms.y=b-;nnn.push(ms);
ms.x=a;ms.y=b-;nnn.push(ms);
s[a+][b]='$';s[a+][b]='$';s[a-][b]='$';s[a-][b]='$';
ms.x=a+;ms.y=b;nnn.push(ms);ms.x=a+;ms.y=b;nnn.push(ms);ms.x=a-;ms.y=b;nnn.push(ms);
ms.x=a-;ms.y=b;nnn.push(ms);
}
int main()
{ int i,n,xx,yy;
num[].x=;num[].y=;
for(i=;i<;i++)
{
num[i].x=num[i-].x+;
num[i].y=num[i-].y+;
}
state st;
memset(s,'',sizeof(s));
cin>>n;
int nn=n;
fun(num[n].x,num[n].y);
while(n--)
{
while(!nnn.empty())//打印外圈的*
{
st=nnn.front();
nnn.pop();
for(i=;i<;i++)
{
xx=st.x+dir[i][];
yy=st.y+dir[i][];
if(s[xx][yy]=='')
{
s[xx][yy]='.';
ms.x=xx;ms.y=yy;
mmm.push(ms);
}
}
}
while(!mmm.empty())//再外一层的&
{
st=mmm.front();
mmm.pop();
for(i=;i<;i++)
{
xx=st.x+dir[i][];
yy=st.y+dir[i][];
if(s[xx][yy]=='')
{
s[xx][yy]='$';
ms.x=xx;ms.y=yy;
nnn.push(ms);
}
}
}
}
for( i=;i<num[nn].x*;i++)//输出整个图形
{
for(int j=;j<num[nn].y*;j++)
{
if(s[i][j]=='')
cout<<".";
else
cout<<s[i][j];
}
cout<<endl;
}
return ;
}
打印十字图 queue 搞定的更多相关文章
- 打印十字图 JAVA 递归实现
这个是我自己想的,头疼了一个下午,不过还好.做出来了.在网上找这道题但没有找到用递归的做法. /*递归思想实现 * 标题:打印十字图 小明为某机构设计了一个十字型的徽标(并非红十字会啊),如下所示(可 ...
- 蓝桥杯 历届试题 PREV-2 打印十字图
历届试题 打印十字图 时间限制:1.0s 内存限制:256.0MB 小明为某机构设计了一个十字型的徽标(并非红十字会啊),如下所示: 对方同时也需要在电脑dos窗口中以字符的形式输出该标志,并 ...
- java实现 历届试题 蓝桥杯 打印十字图
历届试题 打印十字图 题目描述 小明为某机构设计了一个十字型的徽标(并非红十字会啊),如下所示(可参见p1.jpg) 对方同时也需要在电脑dos窗口中以字符的形式输出该标志,并能任意控制层数. 为了能 ...
- PREV-2_蓝桥杯_打印十字图
问题描述 小明为某机构设计了一个十字型的徽标(并非红十字会啊),如下所示: ..$$$$$$$$$$$$$....$...........$..$$$.$$$$$$$$$.$$$$...$...... ...
- 算法笔记_198:历届试题 打印十字图(Java)
目录 1 问题描述 2 解决方案 1 问题描述 问题描述 小明为某机构设计了一个十字型的徽标(并非红十字会啊),如下所示: ..$$$$$$$$$$$$$....$...........$..$$ ...
- 甘特图——Excel搞定
1. 甘特图 概念 甘特图就是条形图的一种. 甘特图是基于作业排序的目的,将活动与时间联系起来的最早尝试之中的一个. 这是什么意思呢?也就是说甘特图用来表示什么时间做什么事情,相当于一个计划安排.并且 ...
- 蓝桥杯-打印十字图-java
/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2016, 广州科技贸易职业学院信息工程系学生 * All rights reserved. * 文件名称: ...
- 搞定 CompletableFuture,并发异步编程和编写串行程序还有什么区别?你们要的多图长文
你有一个思想,我有一个思想,我们交换后,一个人就有两个思想 If you can NOT explain it simply, you do NOT understand it well enough ...
- 工作必备,五分钟如何搞定Excel甘特图
工作必备,五分钟如何搞定Excel甘特图 https://www.sohu.com/a/212628821_641930 EXCEL中如何给图表添加标题 1.选中图表 >> [布局] 菜 ...
随机推荐
- Element 'beans' cannot have character [children]
在编写spring的applicationContext.xml文件时,出现了: Element 'beans' cannot have character [children], because t ...
- go语言基础之defer延迟调用
1.defer作用 关键字 defer ⽤于延迟一个函数或者方法(或者当前所创建的匿名函数)的执行.注意,defer语句只能出现在函数或方法的内部. 运行场景: defer语句经常被用于处理成对的操作 ...
- 小课堂week19 编程范式巡礼最终季 超级范式
编程范式巡礼(最终季)--超级范式 本周是编程范式系列的最后一次分享,让我们拉长视角,看向远方,进入"元编程"的领域,在<冒号课堂>中起了个很酷的名字:"超级 ...
- Hidden Markov Model Toolbox for Matlab
官网:http://www.cs.ubc.ca/~murphyk/Software/HMM/hmm.html Download Click here. Unziping creates a direc ...
- 表结构设计器(EZDML)1.98版公布
表结构设计器(EZDML)是一个免费的数据库建表的小软件,可高速的进行数据库表结构设计.建立数据模型,能迅速生成代码模板.简单界面和字典文档,支持脚本编程. 新版本号大概有下面改进: 1.修复了部 ...
- Android常用到的一些事件
1:查看是否有存储卡插入 String status=Environment.getExternalStorageState(); if(status.equals(Enviroment.MEDIA_ ...
- 检索COM类工厂的组件失败:80040111
检索 COM 类工厂中 CLSID 为 {--} 的组件失败,原因是出现以下错误: 80040111.如图: 这种问题可能由多种情况造成,目前我遇到两种: 操作系统版本问题 如果是在Win7 64版本 ...
- quartz.net持久化和集群【转】
在实际使用quartz.net中.持久化能保证实例重启后job不丢失. 集群能均衡服务器压力和解决单点问题. quartz.net在这二块配置都比较方便,来看下. 一:持久化 quartz.net的持 ...
- 算法笔记_142:无向图的欧拉回路求解(Java)
目录 1 问题描述 2 解决方案 1 问题描述 John's trip Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 8 ...
- 【JS】jQuery中将数组转换成字符串join()和push()使用
1.push()将元素依次添加至数组:2.join()将数组转换成字符串,里面可以带参数分隔符,默认[,] <script type = text/javascript> $(docume ...