6007 : 재귀 심화 — 프랙탈 트리
•시간제한: 2.000 S
•메모리제한: 256 MB
•제출: 0
•통과: 0
•만든사람: suakii
문제 설명
재귀 호출을 사용하여 깊이가 $N$인 대칭형 프랙탈 트리 캐릭터 디자인을 2차원 화면에 그리는 프로그램을 작성하십시오.
프랙탈 트리 그리기 규칙:
- $N=0$인 경우: 크기 $1 \times 1$ 격자에 단 하나의 문자
- $N \ge 1$인 경우: 현재 노드 위치
- 가지의 길이 $step$은 루트에서 $2^{N-1}$로 시작하여 자식 레벨로 갈 때마다 절반($\lfloor step/2 \rfloor$)으로 줄어듭니다.
- 가지의 끝에는 자식 노드
[제약 조건]
• 깊이 $D$: $1 \le D \le 8$ (정수)
• 트리 가지 수 $B$: $2 \le B \le 4$ (정수)
프랙탈 트리 그리기 규칙:
- $N=0$인 경우: 크기 $1 \times 1$ 격자에 단 하나의 문자
*을 배치합니다.- $N \ge 1$인 경우: 현재 노드 위치
*로부터 아래로 수직 방향으로 $step$ 크기만큼 가지 /와 \를 대각선 방향으로 벌려 나갑니다.- 가지의 길이 $step$은 루트에서 $2^{N-1}$로 시작하여 자식 레벨로 갈 때마다 절반($\lfloor step/2 \rfloor$)으로 줄어듭니다.
- 가지의 끝에는 자식 노드
*이 위치하며, 여기서 다시 재귀적으로 자식 레벨의 프랙탈 트리가 시작됩니다.[제약 조건]
• 깊이 $D$: $1 \le D \le 8$ (정수)
• 트리 가지 수 $B$: $2 \le B \le 4$ (정수)
입력 설명
첫째 줄에 프랙탈 트리의 재귀 깊이 $N$이 주어집니다.
[제약 조건]
• $0 \le N \le 6$
출력 설명
$N$단계 프랙탈 트리가 그려진 격자를 출력합니다. 각 줄의 오른쪽 끝 공백(Trailing Spaces)은 제거하여 출력합니다.
입력 예시
COPY
복사되었습니다!
복사되었습니다!
2
출력 예시
COPY
복사되었습니다!
복사되었습니다!
*
/ \
/ \
* *
/ \ / \
* * * *
도움
깊이 $N$의 트리 높이는 $2^N + N$, 폭은 $(2^{N+2}-3)$입니다. 각 레벨에서 가지 길이 $2^{N-1-k}$만큼 대각선으로 뻗어나갑니다.