import java.util.Scanner;
public class Main {
static char[][]a;
static int n,width,mid;
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
n=sc.nextInt();
width=5+4*n;//整体正方形边长
mid=width/2;//最中心
a=new char[width][width];
for(int i=0;i<width;i++) {//先全变成.
for(int j=0;j<width;j++) {
a[i][j]='.';
}
}
for(int i=0;i<5;i++) {//中心变成$
a[width/2][width/2-2+i]='$';
a[width/2-2+i][width/2]='$';
}
change(4);//从最内层向最外层递归求解
for(int i=0;i<width;i++) {
for(int j=0;j<width;j++) {
System.out.print(a[i][j]);
}
System.out.println();
}
}
private static void change( int w) {
if(w>mid) {//最后一层w刚好等于mid,大于则退出
return;
}
for(int i=mid-w+2;i<=mid+w-2;i++) {//最内层的外圈
a[mid-w][i]='$';
a[mid+w][i]='$';
a[i][mid-w]='$';
a[i][mid+w]='$';
}
//以下为最内层的四个角的12个$
a[mid-w+2][mid-w+2]='$';//左上
a[mid-w+2-1][mid-w+2]='$';//左上上
a[mid-w+2][mid-w+2-1]='$';//左上左
a[mid-w+2][mid+w-2]='$';//右上
a[mid-w+2][mid+w-2+1]='$';//右上右
a[mid-w+2-1][mid+w-2]='$';//右上上
a[mid+w-2][mid-w+2]='$';//左下
a[mid+w-2+1][mid-w+2]='$';//左下下
a[mid+w-2][mid-w+2-1]='$';//左下左
a[mid+w-2][mid+w-2]='$';//右下
a[mid+w-2+1][mid+w-2]='$';//右下下
a[mid+w-2][mid+w-2+1]='$';//右下右
change(w+2);//递归求下一层
}
}
蓝桥练习系统历届试题PREV-2打印十字图Java代码
最新推荐文章于 2024-08-11 20:00:32 发布