• 分形算法 (dfs)



    圆圈

    题目描述

        圈圈圆圆圈圈,lulu小朋友最近看喜羊羊看多了,老是受刺激就画圆圈,听到小于8的数字时,还会画出十分有规律的圆圈,现在你需要根据样例观察出规律,编写程序,根据输入的数字n(n<8),输出对应的圆圈。

    输入描述:

    第一行是样例数T(T<9)
    第2到2+T-1行每行有一个整数n(n<8),代表lulu听到的数字

    输出描述:

    听到对应数字时,输出对应样子的圆圈。
    示例1

    输入

    4
    0
    1
    2
    3

    输出

    O
     O
    O O
     O
        O
       O O
        O
     O     O
    O O   O O
     O     O
        O
       O O
        O
                 O
                O O
                 O
              O     O
             O O   O O
              O     O
                 O
                O O
                 O
        O                 O
       O O               O O
        O                 O
     O     O           O     O
    O O   O O         O O   O O
     O     O           O     O
        O                 O
       O O               O O
        O                 O
                 O
                O O
                 O
              O     O
             O O   O O
              O     O
                 O
                O O
                 O

    说明

    当n=0时输出
    O
    当n=1时输出
    *O
    O*O
    *O
    当n=2时输出
    ****O
    ***O*O
    ****O
    *O*****O
    O*O***O*O
    *O*****O
    ****O
    ***O*O
    ****O
    上面的'O'是大写英文字母O,'*'代表空格,每一行最后一个O后面不带空格。

    备注:

    对于100%的数据,
    0<T<9;
    0<=n<8;



     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<cmath>
     5 #include<algorithm>
     6 #include<map>
     7 #include<set>
     8 #include<vector>
     9 #include<stack>
    10 #include<queue> 
    11 using namespace std;
    12 #define ll long long
    13 const int inf=99999999;
    14 const int mod=1e9+7;
    15 const int maxn=2500;
    16 char e[maxn][maxn];
    17 int len;
    18 void dfs(int n,int x,int y)
    19 {
    20     if(n==1)
    21         e[x][y]='O';
    22     else
    23     {
    24         int d=pow(3,n-2); 
    25         dfs(n-1,x+d,y);
    26           //左方的分形
    27         dfs(n-1,x,y+d);
    28           //上方的分形
    29         dfs(n-1,x+d,y+2*d);
    30            //右方的分形
    31         dfs(n-1,x+2*d,y+d);
    32           //下方的分形
    33     }
    34 }
    35 int main()
    36 {
    37     int T;
    38     cin>>T;
    39     int n;
    40     while(T--)
    41     {
    42         cin>>n;
    43         len=pow(3,n);//图的大小 
    44         for(int i=0;i<len;i++)//初始化 
    45             for(int j=0;j<len;j++)
    46                 e[i][j]=' ';
    47         dfs(n+1,0,0);//搜索 
    48         for(int i=0;i<len;i++)//打印图形 
    49         {
    50             for(int j=0;j<len;j++)
    51                 cout<<e[i][j];
    52             cout<<endl;
    53            }
    54        }
    55     return 0;
    56 }



    大佬见笑,,
  • 相关阅读:
    Request
    HTTP
    mysql递归查询函数
    redis 6.0.9配置文件详解
    java对数据进行加密、解密
    java Base64编码、解码
    nginx基础使用
    linux指令笔记
    Spring 常用注解粗陋看法
    docker 已有容器修改容器配置
  • 原文地址:https://www.cnblogs.com/xwl3109377858/p/10889905.html
Copyright © 2020-2023  润新知