重点在DFS 另外模拟需要找数的规律
关于get的函数见下:
https://blog.csdn.net/weixin_41042404/article/details/80934191
cin.getline(s[i],n);
1.前面若和cin混用 要getchar()
2.第二个参数n包括\n! 一般n取数组边界即可。
代码
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
char picture[3001][3001];
char pattern[6][6];
void func(int x,int y,int n,int scale){
if(scale==1){
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
picture[x+i][y+j]=pattern[i][j];
}
}
}
else{
int block;
block=pow(n,scale-1);
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
if(pattern[i][j]!=' '){
func(x+i*block,y+j*block,n,scale-1);
}
}
}
}
}
int main(){
int n,scale,length;
while(scanf("%d",&n)!=EOF){
if(n==0) break;
getchar();
for(int i=0;i<n;i++){
cin.getline(pattern[i],6);
}
cin>>scale;
length=pow(n,scale);
for(int i=0;i<length;i++){
for(int j=0;j<length;j++){
picture[i][j]=' ';
}
}
func(0,0,n,scale);
for(int i=0;i<length;i++){
for(int j=0;j<length;j++){
cout<<picture[i][j];
}
cout<<endl;
}
}
}