HRBUST - 2347 - 递归画图 - vj大一上寒假训练2.11

时间:2023-05-17 22:22:56

HRBUST - 2347 - 递归画图 - vj大一上寒假训练2.11

其他题可由本题变形得到.

思路:利用坐标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("");
     }
 }