zoukankan      html  css  js  c++  java
  • 蓝桥杯-打印十字图

    历届试题 打印十字图  
    时间限制:1.0s   内存限制:256.0MB
    提交此题   锦囊1   锦囊2
    
    问题描述
    小明为某机构设计了一个十字型的徽标(并非红十字会啊),如下所示:
    
    ..$$$$$$$$$$$$$..
    ..$...........$..
    $$$.$$$$$$$$$.$$$
    $...$.......$...$
    $.$$$.$$$$$.$$$.$
    $.$...$...$...$.$
    $.$.$$$.$.$$$.$.$
    $.$.$...$...$.$.$
    $.$.$.$$$$$.$.$.$
    $.$.$...$...$.$.$
    $.$.$$$.$.$$$.$.$
    $.$...$...$...$.$
    $.$$$.$$$$$.$$$.$
    $...$.......$...$
    $$$.$$$$$$$$$.$$$
    ..$...........$..
    ..$$$$$$$$$$$$$..
    对方同时也需要在电脑dos窗口中以字符的形式输出该标志,并能任意控制层数。
    
    输入格式
    一个正整数 n (n<30) 表示要求打印图形的层数。
    输出格式
    对应包围层数的该标志。
    样例输入1
    1
    样例输出1
    ..$$$$$..
    ..$...$..
    $$$.$.$$$
    $...$...$
    $.$$$$$.$
    $...$...$
    $$$.$.$$$
    ..$...$..
    ..$$$$$..
    样例输入2
    3
    样例输出2
    ..$$$$$$$$$$$$$..
    ..$...........$..
    $$$.$$$$$$$$$.$$$
    $...$.......$...$
    $.$$$.$$$$$.$$$.$
    $.$...$...$...$.$
    $.$.$$$.$.$$$.$.$
    $.$.$...$...$.$.$
    $.$.$.$$$$$.$.$.$
    $.$.$...$...$.$.$
    $.$.$$$.$.$$$.$.$
    $.$...$...$...$.$
    $.$$$.$$$$$.$$$.$
    $...$.......$...$
    $$$.$$$$$$$$$.$$$
    ..$...........$..
    ..$$$$$$$$$$$$$..
    提示
    请仔细观察样例,尤其要注意句点的数量和输出位置。

    这个题一步步的来,找规律还是做得出来的,除非一开始就看昏的,被这个给下到了

    大概步骤:先找到n和行列的关系,k=5+*i,然后打印中间的十字形,再打印不带四角的“回”字

    然后再将四个角补上

    import java.util.Scanner;
    
    public class 回字 {
        public static void main(String[] args) {
            
            Scanner sc=new Scanner(System.in);
            int n=sc.nextInt();
            getHui(n);
            
        }
    
        private static void getHui(int k) {
            int n=5+k*4;
            String[][] arr=new String[n][n];
            for (int i = 0; i < arr.length; i++) {
                for (int j = 0; j < arr.length; j++) {
                    arr[i][j]=".";
                }
            }
            
            //添加中间的十字形
            int d=n/2;
            arr[d][d]="$";
            arr[d-2][d]=arr[d-1][d]=arr[d+1][d]=arr[d+2][d]="$";
            arr[d][d-2]=arr[d][d-1]=arr[d][d+1]=arr[d][d+2]="$";
            
            //回字部分
            for (int i = 0; i < arr.length; i++) {
                for (int j = 0; j < arr.length; j++) {
                    if(i%2==0&&(i<d-2||i>d+2)&&(j+(i+2)*2)<n){
                        arr[i][j+i+2]="$";
                        arr[j+i+2][i]="$";
                    }else if(i%2==0&&i>d+2&&((j-i)+1)<0&&j>n-i){
                        arr[i][j]="$";
                        arr[j][i]="$";
                    }
                }
            }
            //加角
            for (int i = 0; i < k; i++) {
                
                arr[d-3-i*2][d-2-i*2]="$";
                arr[d-2-i*2][d-2-i*2]="$";
                arr[d-2-i*2][d-3-i*2]="$";
                
                arr[d-2-i*2][d+2+i*2]="$";
                arr[d-3-i*2][d+2+i*2]="$";
                arr[d-2-i*2][d+3+i*2]="$";
                
                arr[d+3+i*2][d+2+i*2]="$";
                arr[d+2+i*2][d+2+i*2]="$";
                arr[d+2+i*2][d+3+i*2]="$";
                
                arr[d+3+i*2][d-2-i*2]="$";
                arr[d+2+i*2][d-2-i*2]="$";
                arr[d+2+i*2][d-3-i*2]="$";
            }
            //打印结果
            for (int i = 0; i < arr.length; i++) {
                for (int j = 0; j < arr.length; j++) {
                    System.out.print(arr[i][j]);
                }
                System.out.println();
            }
        }
    }
     
  • 相关阅读:
    phpcms后台进入地址(包含No permission resources错误)
    phpmyadmin上传大sql文件办法
    ubuntu彻底卸载mysql
    Hdoj 2602.Bone Collector 题解
    一篇看懂词向量
    Hdoj 1905.Pseudoprime numbers 题解
    The Python Challenge 谜题全解(持续更新)
    Hdoj 2289.Cup 题解
    Hdoj 2899.Strange fuction 题解
    Hdoj 2199.Can you solve this equation? 题解
  • 原文地址:https://www.cnblogs.com/gx-143/p/6158424.html
Copyright © 2011-2022 走看看