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();
            }
        }
    }
     
  • 相关阅读:
    java 整合 ssm (spring+ springmvc+ mybatis)
    java spring 事物 ( 已转账为例 ) 基于 aop 注解
    java spring 事物 ( 已转账为例 ) 基于 xml 配置,事务类型说明
    JAVA Spring 面向切面编程 基本案例(AOP)
    java websocket 简单的聊天室
    java websocket 实现简单的前后端即时通信
    js 通过文件输入框读取文件为 base64 文件, 并借助 canvas 压缩 FileReader, files, drawImage
    js 使用 XMLHttpRequest 请求发送 formdata 对象,从而上传文件
    html5 canvas ( 创建图形对象 ) createImageData
    编写Shell脚本的最佳实践
  • 原文地址:https://www.cnblogs.com/gx-143/p/6158424.html
Copyright © 2011-2022 走看看