• 历届试题 打印十字图


    问题描述

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

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

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

    输入格式
    一个正整数 n (n<30) 表示要求打印图形的层数。
    输出格式
    对应包围层数的该标志。
    样例输入1
    1
    样例输出1
    ..$$$$$..
    ..$...$..
    $$$.$.$$$
    $...$...$
    $.$$$$$.$
    $...$...$
    $$$.$.$$$
    ..$...$..
    ..$$$$$..
    样例输入2
    3
    样例输出2
    ..$$$$$$$$$$$$$..
    ..$...........$..
    $$$.$$$$$$$$$.$$$
    $...$.......$...$
    $.$$$.$$$$$.$$$.$
    $.$...$...$...$.$
    $.$.$$$.$.$$$.$.$
    $.$.$...$...$.$.$
    $.$.$.$$$$$.$.$.$
    $.$.$...$...$.$.$
    $.$.$$$.$.$$$.$.$
    $.$...$...$...$.$
    $.$$$.$$$$$.$$$.$
    $...$.......$...$
    $$$.$$$$$$$$$.$$$
    ..$...........$..
    ..$$$$$$$$$$$$$..
    提示
    请仔细观察样例,尤其要注意句点的数量和输出位置。
    思路:我在做这道题的时候发现整个矩阵是中心对称,其他的规律一直没有找到,直到看到下面这张图
    才发现这个矩阵要表达的图案是这个样子的,很无语,。仔细观察这个图我们发现他是中间一个红色的十,然后向外不断扩展的一层层的环,n代表环数,,所以我们可以在程序中一层层生成。因为整个图案是中心对称的,我们可以先求四分之一,在此基础上扩展为二分之一,再扩展为全部。
    代码如下
     1 import java.util.Scanner;
     2 
     3     public class Main{
     4         
     5         public static void main(String[] args){ 
     6             Scanner scanner=new Scanner(System.in);
     7             int n=scanner.nextInt();
     8             answer(n);
     9             
    10         }
    11        public  static void answer(int n)
    12        {
    13            
    14            int m=5+4*n;
    15            int middle=m/2+1;
    16            char array[][]=new char[m+1][m+1];
    17            for (int i = 1; i <= m; i++) {
    18             for (int j = 1; j <= m; j++) {
    19                 array[i][j]='.';
    20             }
    21         }
    22            for (int i = -2; i <=2; i++) {//初始化中间的十字
    23             array[middle+i][middle]='$';
    24            }
    25            for (int j = -2; j <=2; j++) {
    26                array[middle][middle+j]='$';
    27             }
    28            for (int i = 0; i < n; i++) {//表示层数
    29             for (int j = middle-4-2*i; j <=middle; j++) {//1表示左上的一部分2表示右半部分
    30                 for (int j2 = middle-4-2*i; j2 <=middle; j2++) {
    31                     if(j2!=middle-4-2*i && j2!=middle-3-2*i&&j==middle-4-2*i)
    32                     {
    33                         array[j][j2]='$';//1
    34                         array[j][m-j2+1]='$';//2
    35                     }
    36                     if(j!=middle-4-2*i && j!=middle-3-2*i&&j2==middle-4-2*i) {
    37                         array[j][j2]='$';//1
    38                         array[j][m-j2+1]='$';//2
    39                     }
    40                     if((j==middle-4-2*i || j==middle-3-2*i || j==middle-2-2*i)&&j2==middle-2-2*i) {
    41                         array[j][j2]='$';//1
    42                         array[j][m-j2+1]='$';//2
    43                     }
    44                     if((j2==middle-4-2*i || j2==middle-3-2*i || j2==middle-2-2*i)&&j==middle-2-2*i) {
    45                         array[j][j2]='$';//1
    46                         array[j][m-j2+1]='$';//2
    47                     }
    48                 }
    49             }
    50             
    51           }
    52            for (int i = 1; i <= m/2; i++) {//扩展为全部。
    53             for (int j = 1; j <= m; j++) {
    54                 array[m+1-i][j]=array[i][j];
    55             }
    56         }
    57            for (int i = 1; i <=m; i++) {
    58                for (int j = 1; j <=m; j++) {
    59                    System.out.print(array[i][j]);
    60                }
    61                System.out.println();
    62            }
    63        }
    64  }
  • 相关阅读:
    什么时候用到存储过程
    Group By
    李航统计学习方法(第二版)(五):k 近邻算法简介
    数据可视化之powerBI基础(十三)熟练使用Power BI的日期切片器
    数据可视化之powerBI基础(十二)PowerBI导入Excel数据有哪几种方式?
    数据可视化之powerBI基础(十一)Power BI中的数据如何导出到Excel中?
    数据可视化之powerBI基础(十)快速度量值,帮你更快的进行数据分析
    数据可视化之powerBI基础(九)Power BI中的“新表”,你会用吗?
    数据可视化之powerBI基础(八)PowerBI的表格,你真的会用吗
    数据可视化之powerBI基础(七)一文带你熟悉PowerBI建模视图中的功能
  • 原文地址:https://www.cnblogs.com/henuliulei/p/10423749.html
Copyright © 2020-2023  润新知