题目描述:
把一个个大小差一圈的筐叠上去,使得从上往下看时,边筐花色交错。这个工作现在要让计算机来完成,得看你的了。
Input输入是一个个的三元组,分别是,外筐尺寸n(n为满足0<n<80的奇整数),中心花色字符,外筐花色字符,后二者都为ASCII可见字符; Output输出叠在一起的筐图案,中心花色与外筐花色字符从内层起交错相叠,多筐相叠时,最外筐的角总是被打磨掉。叠筐与叠筐之间应有一行间隔。
样例输入:
11 B A
5 @ W
样例输出:
AAAAAAAAA ABBBBBBBBBA ABAAAAAAABA ABABBBBBABA ABABAAABABA ABABABABABA ABABAAABABA ABABBBBBABA ABAAAAAAABA ABBBBBBBBBA AAAAAAAAA @@@ @WWW@ @W@W@ @WWW@ @@@
import java.util.Scanner;
/*解题核心思路:抓每个圈的左上角点坐标,每个圈由边长,左上角坐标,循环次数所确定
* 循环次数每增加1,边长增加2*/
public class Main {
public static void printPattern(int size,String out,String in){
String[][] kuang = new String[size][size];
for (int i=1,j=0;i<=size;i+=2,j++){//i边长,j循环次数
int center = (size-1)/2;
int x = center-j;
int y=x;
String pattern = j%2==0?in:out;
for (int k=0;k<i;k++){
kuang[x][y+k]=pattern;//上
kuang[x+k][y]=pattern;//左
kuang[x+i-1][y+k]=pattern;//下
kuang[x+k][y+i-1]=pattern;//右
}
}
if (size!=1){
kuang[0][0]=" ";
kuang[0][size-1]=" ";
kuang[size-1][0]=" ";
kuang[size-1][size-1]=" ";
}
for (int i=0;i<size;i++){
for (int j=0;j<size;j++){
System.out.print(kuang[i][j]);
}
System.out.println();
}
}
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()){
int in_size = scanner.nextInt();
String in_pattern = scanner.next();
String out_pattern = scanner.next();
printPattern(in_size,out_pattern,in_pattern);
System.out.println();
}
}
}