打印十字图 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.选中图表 >> [布局] 菜 ...
随机推荐
- TYVJ-P1864 守卫者的挑战 题解
P1864 [Poetize I]守卫者的挑战 时间: 1000ms / 空间: 131072KiB / Java类名: Main 描述 打开了黑魔法师Vani的大门,队员们在迷宫般的路上漫无目的地搜 ...
- OpenJudge 8782 乘积最大——S.B.S
8782:乘积最大 总时间限制: 1000ms 内存限制: 65536kB 描述 今年是国际数学联盟确定的“2000——世界数学年”,又恰逢我国著名数学家华罗庚先生诞辰90周年.在华罗庚先生的家乡江 ...
- DCM4CHEE概述
DCM4CHEE构建概述: 所谓“磨刀不误砍柴工”,通过上面的知识普及,大致梳理了开源项目的应用流程.在下一篇博文开始正式介绍DCM4CHEE构建过程之前,先对DCM4CHEE进行一个简单的概述. d ...
- metal2的四个新features
https://developer.apple.com/documentation/metal/mtldevice/ios_and_tvos_devices/about_gpu_family_4 Im ...
- ubuntu14.04如何卸载mysql
1. 删除mysql的数据文件 sudo rm /var/lib/mysql/ -R 2. 删除mqsql的配置文件 sudo rm /etc/mysql/ -R 3. 自动卸载mysql的程序 su ...
- 学生表 课程表 成绩表 教师表 50个常用sql语句
原文:http://www.cnblogs.com/zengxiangzhan/archive/2009/09/23/1572276.html Student(S#,Sname,Sage,Ssex) ...
- [Functional Programming] Write simple Semigroups type
An introduction to concatting items via the formal Semi-group interface. Semi-groups are simply a ty ...
- Wifidog及认证过程初分析
Wifidog初分析 一.综述 wifidog是搭建无线热点认证系统的解决方案之一,他比nocat.nodog更适合互联网营销思路.常见的使用在openwrt系统上,它实现了路由器和认证服务器的数据交 ...
- Android研究之动态创建UI界面具体解释
Android的基本UI界面一般都是在xml文件里定义好,然后通过activity的setContentView来显示在界面上.这是Android UI的最简单的构建方式.事实上,为了实现更加复 ...
- IOS APP开发UI上的尺寸注意问题(屏幕、适配、分辨率)