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

HRBUST - 2347 - 递归画图 - vj大一上寒假训练2.11_第1张图片

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

思路:利用坐标dfs搜索.

注意:1,初始化.2,坐标实时更新(x,y)

代码:

 1 #include
 2 #include
 3 #include
 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];
 9 char ans[amn][amn];
10 void solve(int x,int y,int tot)
11 {
12     if(tot==a)
13     {
14         for(int k=x; k)
15         {
16             for(int l=y; l)
17             {
18                 if(mp[k-x][l-y]=='*')
19                     ans[k][l]='*';
20             }
21         }
22         return;
23     }
24     int tes=tot/a;
25     for(int i=x; ites)
26     {
27         for(int j=y; jtes)
28         {
29             if(mp[(i-x)/tes][(j-y)/tes]=='*')
30             {
31                 solve(i,j,tes);
32             }
33         }
34     }
35 }
36 int main()
37 {
38     while(~scanf("%d%d",&a,&b))
39     {
40         for(int i=0; i)
41         {
42             getchar();
43             for(int j=0; j)
44                 scanf("%c",&mp[i][j]);
45         }
46         int c=1;///注意初始化
47         for(int i=1; i<=b; i++)c*=a;
48         for(int i=0; i)
49             for(int j=0; j)
50                 ans[i][j]=' ';
51         solve(0,0,c);
52         for(int i=0; i)
53         {
54             for(int j=0; j)
55             {
56                 printf("%c",ans[i][j]);
57             }
58             printf("\n");
59         }
60         puts("");
61     }
62 }

 

转载于:https://www.cnblogs.com/Railgun000/p/10363596.html

你可能感兴趣的:(HRBUST - 2347 - 递归画图 - vj大一上寒假训练2.11)