题解 | #超级圣诞树#
超级圣诞树
https://www.nowcoder.com/practice/470d26c9a73e4e17be8cc45cac843423
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
while (in.hasNextInt()) { // 注意 while 处理多个 case
int a = in.nextInt();
int[][] arr = new int[800][800];
int[][] newArr = new int[800][800];
for(int i=0; i<400; i++) {
for(int j=0; j<400; j++) {
arr[i][j]=0;
}
}
arr[1][3]=1;
arr[2][2]=1;
arr[2][4]=1;
arr[3][1]=1;
arr[3][3]=1;
arr[3][5]=1;
int cd = (int)Math.pow(2,a-1);
for(int k=2; k<=a; k++) {
for(int i=1; i<=cd*3; i++) {
for(int j=1; j<cd*2*3; j++) {
if(arr[i][j]==1) {
int len=(int)Math.pow(2,k-2)*3;
newArr[i+len][j+len*2]=1;
newArr[i+len][j]=1;
newArr[i][j+len]=1;
}
}
}
for(int i=1; i<=cd*3; i++) {
for(int j=1; j<cd*2*3; j++) {
arr[i][j]=0;
}
}
for(int i=1; i<=cd*3; i++) {
for(int j=1; j<cd*2*3; j++) {
arr[i][j]=newArr[i][j];
newArr[i][j]=0;
}
}
}
for(int i=1; i<=(int)Math.pow(2,a-1)*3; i++) {
for(int j=1; j<(int)Math.pow(2,a-1)*2*3; j++) {
if(arr[i][j]==1) {
System.out.print("*");
} else {
System.out.print(" ");
}
}
System.out.println();
}
for (int i = 1; i <= a; i++) {
for (int j = 1; j < 3 * Math.pow(2,a-1); j++) {
System.out.print(" ");
}
System.out.println("*");
}
}
}
}

