#include<stdio.h>bool array[3073][6145];void drawTri(int X,int Y) { int idx,x=X,y=Y; array[x][y] = true; for(idx=0;idx<2;idx++) { x-=1;y+=1; array[x][y] = true; } for(idx=0;idx<2;idx++) { x+=1;y+=1; array[x][y] = true; } for(idx=0;idx<3;idx++) { y-=1; array[x][y] = true; }}void dfs(int lv,int x,int y) { if(lv==3) { drawTri(x,y); return; } else { dfs(lv/2, x,y); dfs(lv/2, x-lv/2, y+lv/2); dfs(lv/2, x,y+lv); }}int main(void) { int n; scanf("%d",&n); int x=n-1,y=0; dfs(n/2, x,y); dfs(n/2, x-n/2, y+n/2); dfs(n/2, x,y+n); int i,j; for(i=0;i<n;i++) { for(j=0;j<n*2;j++) { if(array[i][j]==true) printf("*"); else printf(" "); } printf("\n"); } return 0;}
https://www.acmicpc.net/blog/v...
댓글을 작성하려면 로그인해야 합니다.
superl3 6년 전
#include<stdio.h>
bool array[3073][6145];
void drawTri(int X,int Y) {
int idx,x=X,y=Y;
array[x][y] = true;
for(idx=0;idx<2;idx++) {
x-=1;y+=1;
array[x][y] = true;
}
for(idx=0;idx<2;idx++) {
x+=1;y+=1;
array[x][y] = true;
}
for(idx=0;idx<3;idx++) {
y-=1;
array[x][y] = true;
}
}
void dfs(int lv,int x,int y) {
if(lv==3) {
drawTri(x,y);
return;
}
else {
dfs(lv/2, x,y);
dfs(lv/2, x-lv/2, y+lv/2);
dfs(lv/2, x,y+lv);
}
}
int main(void) {
int n;
scanf("%d",&n);
int x=n-1,y=0;
dfs(n/2, x,y);
dfs(n/2, x-n/2, y+n/2);
dfs(n/2, x,y+n);
int i,j;
for(i=0;i<n;i++) {
for(j=0;j<n*2;j++) {
if(array[i][j]==true)
printf("*");
else
printf(" ");
}
printf("\n");
}
return 0;
}