HLG 1028 Repeater【图形处理】
题意: 给你个n*n 的位图,让你放大k 倍后输出。
分析: 最终图案的每一部分都是有原图相应位置扩大而来,可以用递归实现。
View Code
#include<stdio.h> #include<math.h> #include<string.h> char a[30][30]; char v[3005][3005]; int n; void dfs(int k,int x,int y) { int tmp,i,j,tot,l; if(k==1) { for(i=x;i<x+n;i++) for(j=y;j<y+n;j++) v[i][j]=a[i-x][j-y]; return; } tot=1;l=1; for(i=1;i<k-1;i++) l*=n; for(i=0;i<n;i++) for(j=0;j<n;j++) if(a[i][j]!=' ') dfs(k-1,x+l*n*i,y+l*n*j); } int main() { int l,i,j,k; while(scanf("%d",&n),n) { getchar(); for(i=0;i<n;i++) gets(a[i]); memset(v,' ',sizeof(v)); scanf("%d",&k); l=1; for(i=1;i<=k;i++) l*=n; dfs(k,0,0); for(i=0;i<l;i++) { v[i][l]='\0'; puts(v[i]); } } return 0; }



浙公网安备 33010602011771号