题目描述

小明为某机构设计了一个十字型的徽标(并非红十字会啊),如下所示:
..$$$$$$$$$$$$$..
..$...........$..
$$$.$$$$$$$$$.$$$
$...$.......$...$
$.$$$.$$$$$.$$$.$
$.$...$...$...$.$
$.$.$$$.$.$$$.$.$
$.$.$...$...$.$.$
$.$.$.$$$$$.$.$.$
$.$.$...$...$.$.$
$.$.$$$.$.$$$.$.$
$.$...$...$...$.$
$.$$$.$$$$$.$$$.$
$...$.......$...$
$$$.$$$$$$$$$.$$$
..$...........$..
..$$$$$$$$$$$$$..

对方同时也需要在电脑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 搞定的更多相关文章

  1. 打印十字图 JAVA 递归实现

    这个是我自己想的,头疼了一个下午,不过还好.做出来了.在网上找这道题但没有找到用递归的做法. /*递归思想实现 * 标题:打印十字图 小明为某机构设计了一个十字型的徽标(并非红十字会啊),如下所示(可 ...

  2. 蓝桥杯 历届试题 PREV-2 打印十字图

    历届试题 打印十字图   时间限制:1.0s   内存限制:256.0MB 小明为某机构设计了一个十字型的徽标(并非红十字会啊),如下所示: 对方同时也需要在电脑dos窗口中以字符的形式输出该标志,并 ...

  3. java实现 历届试题 蓝桥杯 打印十字图

    历届试题 打印十字图 题目描述 小明为某机构设计了一个十字型的徽标(并非红十字会啊),如下所示(可参见p1.jpg) 对方同时也需要在电脑dos窗口中以字符的形式输出该标志,并能任意控制层数. 为了能 ...

  4. PREV-2_蓝桥杯_打印十字图

    问题描述 小明为某机构设计了一个十字型的徽标(并非红十字会啊),如下所示: ..$$$$$$$$$$$$$....$...........$..$$$.$$$$$$$$$.$$$$...$...... ...

  5. 算法笔记_198:历届试题 打印十字图(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 问题描述 小明为某机构设计了一个十字型的徽标(并非红十字会啊),如下所示: ..$$$$$$$$$$$$$....$...........$..$$ ...

  6. 甘特图——Excel搞定

    1. 甘特图 概念 甘特图就是条形图的一种. 甘特图是基于作业排序的目的,将活动与时间联系起来的最早尝试之中的一个. 这是什么意思呢?也就是说甘特图用来表示什么时间做什么事情,相当于一个计划安排.并且 ...

  7. 蓝桥杯-打印十字图-java

    /* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2016, 广州科技贸易职业学院信息工程系学生 * All rights reserved. * 文件名称: ...

  8. 搞定 CompletableFuture,并发异步编程和编写串行程序还有什么区别?你们要的多图长文

    你有一个思想,我有一个思想,我们交换后,一个人就有两个思想 If you can NOT explain it simply, you do NOT understand it well enough ...

  9. 工作必备,五分钟如何搞定Excel甘特图

    工作必备,五分钟如何搞定Excel甘特图  https://www.sohu.com/a/212628821_641930 EXCEL中如何给图表添加标题 1.选中图表 >> [布局] 菜 ...

随机推荐

  1. java springMVC 报400错误问题

    java springMVC 中如果报400错误 很有可能是因为时间转换的问题. 我在项目中就遇到了这个问题,是因为我少引用了一个库,如果是因为时间问题的话添加以下依赖就可以解决. <depen ...

  2. iOS:沙盒、偏好设置、归档、解归档

    一.沙盒和应用程序包 •iOS应用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被称为沙盒 •iOS常用目录: –Bundle –Documents –Library/Ca ...

  3. ArrayList的使用和List<T>的比较

    使用非泛型集合类的限制可以通过编写一小段程序来演示,该程序利用 .NET Framework 基类库中的 ArrayList 集合类.ArrayList 是一个使用起来非常方便的集合类,无需进行修改即 ...

  4. 关于docker的15个小tip

    1. 获取最近运行容器的id 这是我们经常会用到的一个操作,按照官方示例,你可以这样做(环境ubuntu): $ ID=$(docker run ubuntu echo hello world) he ...

  5. vi命令整理

    vi命令整理 u 撤销上一次操作 ctrl+r 恢复上一次操作 : 跳转至第1行 :$ 跳转至最后一行 ctrl+f 向文章末尾翻页 ctrl+b 向文章开始翻页 yy 复制一行 p 粘贴刚刚复制第一 ...

  6. 通过Intel XDK编写跨平台app(一)

    Intel XDK 是一个新的跨平台手机应用开发工具.它努力把整个开发流程变的简单,尽可能把所有的平台都封装到一个包中,通过收集各种开发工具来使你的开发变的简单. 在这篇文章中,我将会向你介绍什么是I ...

  7. swift 音乐播放器项目-《lxy的杰伦情歌》开发实战演练

    近期准备将项目转化为OC与swift混合开发.试着写一个swift音乐播放器的demo,体会到了swift相对OC的优势所在.废话不多说.先上效果图: watermark/2/text/aHR0cDo ...

  8. bundle中vim相关快捷键的使用

    http://www.cnblogs.com/respawn/archive/2012/08/21/2649483.html http://blog.163.com/liao_ya/blog/stat ...

  9. k-means聚类学习

    4.1.摘要 在前面的文章中,介绍了三种常见的分类算法.分类作为一种监督学习方法,要求必须事先明确知道各个类别的信息,并且断言所有待分类项都有一个类别与之对应.但是很多时候上述条件得不到满足,尤其是在 ...

  10. oracle 三表关联查询

      oracle 三表关联查询 CreationTime--2018年7月4日17点52分 Author:Marydon 左连接实现三表关联 表A--------------------------- ...