蓝桥杯2013年第四届真题-打印十字图

2024-04-07 01:48

本文主要是介绍蓝桥杯2013年第四届真题-打印十字图,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

历届试题 打印十字图
时间限制:1.0s 内存限制:256.0MB

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

..$$$$$$$$$$$$$..
..$...........$..
$$$.$$$$$$$$$.$$$
$...$.......$...$
$.$$$.$$$$$.$$$.$
$.$...$...$...$.$
$.$.$$$.$.$$$.$.$
$.$.$...$...$.$.$
$.$.$.$$$$$.$.$.$
$.$.$...$...$.$.$
$.$.$$$.$.$$$.$.$
$.$...$...$...$.$
$.$$$.$$$$$.$$$.$
$...$.......$...$
$$$.$$$$$$$$$.$$$
..$...........$..
..$$$$$$$$$$$$$..

对方同时也需要在电脑dos窗口中以字符的形式输出该标志,并能任意控制层数。

提示
请仔细观察样例,尤其要注意句点的数量和输出位置。

在这里插入图片描述
思路:
第一行和倒数第一行对称,第二行和倒数第二行对称,第三行和倒数第三行对称。
第一列和倒数第一列对称,第二列和倒数第二列对称,第三列和倒数第三列对称。

可以发现规律n=1 s=9; n=2 s=13;n=3 s=17 可以得出 s=4n+5;
如图所示 n 每减一 ,图形就相应的缩小两圈(占两格),用递归实现,从外圈开始将$占的部分都填满然后递归。终止条件是当循环该结束的时候即 递归调用的次数> s/4 结束

import java.util.Scanner;
public class Main {static char [][]arr;static int s;public static void main(String[] args) {Scanner scanner = new Scanner(System.in);while (scanner.hasNext()) {int n=scanner.nextInt();s=5+n*4;//观察可得,输出的均是5+n*4的矩阵arr=new char[s][s];for(int i=0;i<s;i++) {for(int j=0;j<s;j++) {arr[i][j]='.';//初始化矩阵}}tian(0,s,0);for(int i=0;i<s;i++) {for(int j=0;j<s;j++) {System.out.print(arr[i][j]);}System.out.println();}}}//count是每次递归开始的横坐标,len是每次递归瘦两圈前的最大长度,bu是步数private static void tian(int count,int len,int bu) {if(bu>s/4) {	//递归次数大于s/4就退出arr[s/2][s/2]='$';	//填补最中心的点return;}if(count!=0) {//不是第一圈就填上四个角arr[count][count]=arr[count][len-1]=arr[len-1][count]=arr[len-1][len-1]='$';}for(int i=count+2;i<len-2;i++) {//每次递归改变的第一行arr[count][i]=arr[i][count]=arr[len-1][i]=arr[i][len-1]='$';//每次递归改变的第二行if(i==count+2 || i==len-3) {arr[count+1][i]=arr[i][count+1]=arr[len-2][i]=arr[i][len-2]='$';}}//count+2,len-2起到瘦两圈的效果tian(count+2,len-2,bu+1);}
}

这篇关于蓝桥杯2013年第四届真题-打印十字图的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/881356

相关文章

rtmp流媒体编程相关整理2013(crtmpserver,rtmpdump,x264,faac)

转自:http://blog.163.com/zhujiatc@126/blog/static/1834638201392335213119/ 相关资料在线版(不定时更新,其实也不会很多,也许一两个月也不会改) http://www.zhujiatc.esy.es/crtmpserver/index.htm 去年在这进行rtmp相关整理,其实内容早有了,只是整理一下看着方

华为OD机试真题-学生方阵-2024年OD统一考试(E卷)

题目描述 学校组织活动,将学生排成一个矩形方阵。 请在矩形方阵中找到最大的位置相连的男生数量。这个相连位置在一个直线上,方向可以是水平的,垂直的,成对角线的或者呈反对角线的。 注:学生个数不会超过10000 输入描述 输入的第一行为矩阵的行数和列数, 接下来的 n行为矩阵元素,元素间用""分隔。 输出描述 输出一个整数,表示矩阵中最长的位

C语言蓝桥杯

一、语言基础 竞赛常用库函数 最值查询 min_element和max_element在vector(迭代器的使用) nth_element函数的使用 例题lanqiao OJ 497成绩分析 第一种用min_element和max_element函数的写法 第二种用min和max的写法 二分查找 二分查找只能对数组操作 binary_s

多数据源的事务处理总是打印很多无用的log日志

之前做了一个项目,需要用到多数据源以及事务处理,在使用事务处理,服务器总是打印很多关于事务处理的log日志(com.atomikos.logging.Slf4jLogger),但是我们根本不会用到这些log日志,反而使得查询一些有用的log日志变得困难。那要如何屏蔽这些log日志呢? 之前的项目是提高项目打印log日志的级别,后来觉得这样治标不治本。 现在有一个更好的方法: 我使用的是log

2024年AMC10美国数学竞赛倒计时两个月:吃透1250道真题和知识点(持续)

根据通知,2024年AMC10美国数学竞赛的报名还有两周,正式比赛还有两个月就要开始了。计划参赛的孩子们要记好时间,认真备考,最后冲刺再提高成绩。 那么如何备考2024年AMC10美国数学竞赛呢?做真题,吃透真题和背后的知识点是备考AMC8、AMC10有效的方法之一。通过做真题,可以帮助孩子找到真实竞赛的感觉,而且更加贴近比赛的内容,可以通过真题查漏补缺,更有针对性的补齐知识的短板。

fastreport打印trichedit分页问题的解决

用fastreport来打印richedit里面的内容。刚开始放一个frxrichview组件到报表上,然后在 var str: TMemoryStream; begin    begin      str:= TMemoryStream.Create;      CurrRichRecord.richedit.Lines.SaveToStream(str);      str.Posit

模具要不要建设3D打印中心

随着3D打印技术的日益成熟与广泛应用,模具企业迎来了自建3D打印中心的热潮。这一举措不仅为企业带来了前所未有的发展机遇,同时也伴随着一系列需要克服的挑战,如何看待企业引进增材制造,小编为您全面分析。 机遇篇: 加速产品创新:3D打印技术如同一把钥匙,为模具企业解锁了快速迭代产品设计的可能。企业能够迅速将创意转化为实体模型,缩短产品从设计到市场的周期,抢占市场先机。 强化定制化服务:面

Java项目中,配置打印 JDBC 日志的几种方法

在 IDEA 项目中,如果你想打印 JDBC 日志,可以通过配置日志框架(如 Logback 或 Log4j)来实现。Spring Boot 使用的默认日志框架是 Logback,你可以通过在 application.yml 文件中配置日志级别来打印 JDBC 日志。 方法 1: 使用 application.yml 配置 JDBC 日志 logging:level:# 显示 SQL 语句co

大厂算法例题解之网易2018秋招笔试真题 (未完)

1、字符串碎片 【题目描述】一个由小写字母组成的字符串可以看成一些同一字母的最大碎片组成的。例如,“aaabbaaac” 是由下面碎片组成的:‘aaa’,‘bb’,‘c’。牛牛现在给定一个字符串,请你帮助计算这个字符串的所有碎片的 平均长度是多少。 输入描述: 输入包括一个字符串 s,字符串 s 的长度 length(1 ≤ length ≤ 50),s 只含小写字母(‘a’-‘z’) 输出描述

一个C++程序运行,从点击运行到控制台打印文本,电脑硬件的资源是如何调动的

当点击运行一个 C++ 程序并看到控制台输出文本时,计算机硬件和操作系统之间协同工作,完成了多个步骤。这些步骤涉及 CPU、内存、存储设备、操作系统和输入输出设备的共同作用。下面是一个详细的过程描述: 1. 程序加载 启动:当你点击运行一个可执行文件时,操作系统(通常是 Windows、Linux 或 macOS)的文件系统管理器识别请求,并启动加载程序。读取可执行文件:加载程序将可执行文件从