您的位置:首页 > 其它

蓝桥杯-打印十字图

2016-12-11 16:29 225 查看
历届试题 打印十字图
时间限制: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

;
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();
}
}
}


 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: