其他题可由本题变形得到.
思路:利用坐标dfs搜索.
注意:1,初始化.2,坐标实时更新(x,y)
代码:
#include<iostream> #include<cstdio> #include<cstring> #define ll long long using namespace std; ; ; char mp[amn][amn]; char ans[amn][amn]; void solve(int x,int y,int tot) { if(tot==a) { for(int k=x; k<tot+x; k++) { for(int l=y; l<tot+y; l++) { if(mp[k-x][l-y]=='*') ans[k][l]='*'; } } return; } int tes=tot/a; for(int i=x; i<tot+x; i+=tes) { for(int j=y; j<tot+y; j+=tes) { if(mp[(i-x)/tes][(j-y)/tes]=='*') { solve(i,j,tes); } } } } int main() { while(~scanf("%d%d",&a,&b)) { ; i<a; i++) { getchar(); ; j<a; j++) scanf("%c",&mp[i][j]); } ;///注意初始化 ; i<=b; i++)c*=a; ; i<c; i++) ; j<c; j++) ans[i][j]=' '; solve(,,c); ; i<c; i++) { ; j<c; j++) { printf("%c",ans[i][j]); } printf("\n"); } puts(""); } }