蓝桥杯—历届试题(打印十字图)

试题 历届试题 打印十字图

资源限制:

时间限制:1.0s   内存限制:256.0MBjava

问题描述:

小明为某机构设计了一个十字型的徽标(并不是红十字会啊),以下所示:数组

..$$$$$$$$$$$$$..
..$...........$..
$$$.$$$$$$$$$.$$$
$...$.......$...$
$.$$$.$$$$$.$$$.$
$.$...$...$...$.$
$.$.$$$.$.$$$.$.$
$.$.$...$...$.$.$
$.$.$.$$$$$.$.$.$
$.$.$...$...$.$.$
$.$.$$$.$.$$$.$.$
$.$...$...$...$.$
$.$$$.$$$$$.$$$.$
$...$.......$...$
$$$.$$$$$$$$$.$$$
..$...........$..
..$$$$$$$$$$$$$..字体

 

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

 

输入格式:

一个正整数 n (n<30) 表示要求打印图形的层数。设计

输出格式:

对应包围层数的该标志。code

样例输入1:

1blog

样例输出1:

..$$$$$..
..$...$..
$$$.$.$$$
$...$...$
$.$$$$$.$
$...$...$
$$$.$.$$$
..$...$..
..$$$$$..图片

 

样例输入2:

3内存

样例输出2:

..$$$$$$$$$$$$$..
..$...........$..
$$$.$$$$$$$$$.$$$
$...$.......$...$
$.$$$.$$$$$.$$$.$
$.$...$...$...$.$
$.$.$$$.$.$$$.$.$
$.$.$...$...$.$.$
$.$.$.$$$$$.$.$.$
$.$.$...$...$.$.$
$.$.$$$.$.$$$.$.$
$.$...$...$...$.$
$.$$$.$$$$$.$$$.$
$...$.......$...$
$$$.$$$$$$$$$.$$$
..$...........$..
..$$$$$$$$$$$$$..资源

提示

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


思路:

  首先看到题目,卧槽,这什么鬼图,哪里有十字形的徽标。傻逼同样看着题目,看着眼睛都花了。冷静下来想到多是字体或者大小啥的缘由致使看不清楚图片形状。而后作出解这个题最重要的一步:复制到记事本当中,而后修改字体。

 

 

这样看是否是就能够清楚的看出来规则了。而后就是找不一样,找相同了。

相同点:中间的一个十字

不一样点(找规律的点):外面一层一层的增长。

 1 package daily_practice;
 2 
 3 import java.util.Scanner;
 4 
 5 public class Main{
 6     public static void main(String args[]) {
 7         Scanner scan = new Scanner(System.in);
 8         int n = scan.nextInt();
 9         scan.close();
10         char[][] map = new char[5+4*n][5+4*n];
11         
12         for(int i = (5+4*n)/2 - 2; i <= (5+4*n)/2 + 2; i++) {                //输入图像中级的+字
13             for(int j = (5+4*n)/2 - 2; j <= (5+4*n)/2 + 2; j++) {
14                 if(i == (5+4*n)/2 || j == (5+4*n)/2) map[i][j] = '$';
15             }
16         }
17         
18         for(int cen = 1; cen <= n; cen++) {    
19             for(int i = 0; i < 5+4*n; i++) {                //由于输出图形彻底对称,So只须要数组的行,就能够用杭来表示列
20                     if(i>cen*2 && i < 4+4*n - cen*2 ) {            //输出part1
21                         map[i][(cen-1)*2] = '$';
22                         map[i][(4+4*n) - (cen-1)*2] = '$';
23                         map[(cen-1)*2][i] = '$';
24                         map[(4+4*n) - (cen-1)*2][i] = '$';
25                     }
26                     if(i == cen*2) {                            //输出part2
27                         for(int m = 0; m < 3; m++) {
28                             map[i][m+(cen-1)*2] = '$';
29                             map[m+(cen-1)*2][i] = '$';
30                             map[i][(4+4*n) - (m+(cen-1)*2)] = '$';
31                             map[(4+4*n) - (m+(cen-1)*2)][i] = '$';
32                         }
33                     }
34                     if(i == 4+4*n - cen*2) {                    //输出part3
35                         for(int m = 0; m < 3; m++) {
36                             map[i][i+m] = '$';
37                             map[i+m][i] = '$';
38                             map[i][(cen-1)*2 + m] = '$';
39                             map[(cen-1)*2 + m][i] = '$';
40                         }
41                     }
42             }
43         }
44         //输出地图
45         for(int i = 0; i < 5+4*n; i++) {
46             for(int j = 0; j < 5+4*n; j++) {
47                 if(map[i][j] == '$') System.out.print(map[i][j]);
48                 else System.out.print(".");
49             }
50             System.out.println();
51         }
52     }
53 }

 

相关文章
相关标签/搜索