HRBUST - 2347 - 递归画图 - vj大一上寒假训练2.11
Posted brainm
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HRBUST - 2347 - 递归画图 - vj大一上寒假训练2.11相关的知识,希望对你有一定的参考价值。
思路:利用坐标dfs搜索.
注意:1,初始化.2,坐标实时更新(x,y)
代码:
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #define ll long long 5 using namespace std; 6 const int amn=1e3+10; 7 int a,b,con=0; 8 char mp[amn][amn];char ans[amn][amn]; 9 void solve(int x,int y,int tot) 10 { 11 if(tot==a) 12 { 13 //cout<<"!"<<endl<<x<<" "<<y<<endl<<"!!"<<endl; 14 for(int k=x;k<tot+x;k++) 15 { 16 for(int l=y;l<tot+y;l++) 17 { 18 if(mp[k-x][l-y]==‘*‘) 19 ans[k][l]=‘*‘; 20 } 21 } 22 23 //con++; 24 return; 25 } 26 int tes=tot/a; 27 for(int i=x; i<tot+x; i+=tes)///注意这里i=x,j=y,找了好久才发现错误.... 28 { 29 for(int j=y; j<tot+y; j+=tes) 30 { 31 if(mp[(i-x)/tes][(j-y)/tes]==‘*‘) 32 { 33 //cout<<i<<" "<<j<<endl; 34 solve(i,j,tes); 35 } 36 37 } 38 } 39 } 40 int main() 41 { 42 43 while(~scanf("%d%d",&a,&b)) 44 { 45 46 for(int i=0; i<a; i++) 47 { 48 getchar(); 49 for(int j=0;j<a;j++) 50 scanf("%c",&mp[i][j]); 51 } 52 //cout<<"! "; 53 int c=1;///注意初始化 54 for(int i=1;i<=b;i++)c*=a; 55 //cout<<c<<endl; 56 for(int i=0; i<c; i++) 57 for(int j=0; j<c; j++) 58 ans[i][j]=‘ ‘; 59 //cout<<"!! "; 60 solve(0,0,c); 61 //cout<<con<<endl; 62 //cout<<"!!!! "; 63 for(int i=0; i<c; i++) 64 { 65 for(int j=0; j<c; j++) 66 { 67 printf("%c",ans[i][j]); 68 } 69 70 printf(" "); 71 } 72 73 puts(""); 74 //cout<<"!!!!! "; 75 } 76 }
以上是关于HRBUST - 2347 - 递归画图 - vj大一上寒假训练2.11的主要内容,如果未能解决你的问题,请参考以下文章