蓝桥杯-打印十字图

来源:互联网 发布:清华精神知乎 编辑:程序博客网 时间:2024/04/29 14:37
历届试题 打印十字图  时间限制:1.0s   内存限制:256.0MB提交此题   锦囊1   锦囊2问题描述小明为某机构设计了一个十字型的徽标(并非红十字会啊),如下所示:..$$$$$$$$$$$$$....$...........$..$$$.$$$$$$$$$.$$$$...$.......$...$$.$$$.$$$$$.$$$.$$.$...$...$...$.$$.$.$$$.$.$$$.$.$$.$.$...$...$.$.$$.$.$.$$$$$.$.$.$$.$.$...$...$.$.$$.$.$$$.$.$$$.$.$$.$...$...$...$.$$.$$$.$$$$$.$$$.$$...$.......$...$$$$.$$$$$$$$$.$$$..$...........$....$$$$$$$$$$$$$..对方同时也需要在电脑dos窗口中以字符的形式输出该标志,并能任意控制层数。输入格式一个正整数 n (n<30) 表示要求打印图形的层数。输出格式对应包围层数的该标志。样例输入11样例输出1..$$$$$....$...$..$$$.$.$$$$...$...$$.$$$$$.$$...$...$$$$.$.$$$..$...$....$$$$$..样例输入23样例输出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();        }    }}

 

 
0 0
原创粉丝点击