#include<stdio.h> #include<string.h> #include<math.h>
char mat[3001][3001],base[6][6]; int n;
void print(int length) { for(int i=0;i<length;i++) { mat[i][length]='\0'; printf("%s\n",mat[i]); } }
void solve(int x,int y,int depth) { if(depth==1) { for(int i=0;i<n;i++) for(int j=0;j<n;j++) { mat[x+i][y+j]=base[i][j]; } } else { int offset=(int)pow((double)n,(double)(depth-1));
for(int i=0;i<n;i++) for(int j=0;j<n;j++) { if(base[i][j]!=' ') { solve(x+i*offset,y+j*offset,depth-1); } } } }
int main() { while(scanf("%d",&n),n) { getchar(); //基本图形中存在空格,不能用scanf输入 for(int i=0;i<n;i++) { gets(base[i]); } int m; scanf("%d",&m); memset(mat,' ',sizeof(mat));
solve(0,0,m); print((int)pow((double)n,(double)m)); } return 0; } |
注意:
该题中对图形的尾随空格没有限制,若类似的题目提交出现PresentationError则需要在每行末尾处设置'\0',另外,画图的关键是找准坐标。
阅读(1114) | 评论(0) | 转发(0) |