zoukankan      html  css  js  c++  java
  • luogu 1498 南蛮图腾

    题目

    题目描述

     

    自从到了南蛮之地,孔明不仅把孟获收拾的服服帖帖,而且还发现了不少少数民族的智慧,他发现少数民族的图腾往往有着一种分形的效果,在得到了酋长的传授后,孔明掌握了不少绘图技术,但唯独不会画他们的图腾,于是他找上了你的爷爷的爷爷的爷爷的爷爷……帮忙,作为一个好孙子的孙子的孙子的孙子……你能做到吗?

    输入格式

     

    每个数据一个数字,表示图腾的大小(此大小非彼大小) n<=10

    输出格式

     

    这个大小的图腾

    输入输出样例

     

    输入 #1

    2

    输出 #1

       /
      /__
     /  /
    /__/__

    输入 #2

    3

    输出 #2

           /
          /__
         /  /
        /__/__
       /      /
      /__    /__
     /  /  /  /
    /__/__/__/__

    分析

    好像我用的不是分治诶 >_<

    不过题解里有人用分治。注意字符的细节

    (一道普及组的题还没能一次过)

    代码

     1 #include<bits/stdc++.h>
     2 
     3 using namespace std;
     4 
     5 int n,MAXN;
     6 char a[1 << 12][1 << 12];
     7 
     8 int Copy(int x,int y,int len){
     9     for(int i = x + len;i < x + len + len; ++ i)
    10         for(int j = y - len;j < y + len; ++ j){
    11             a[i][j] = a[i - len][j + len];//i,j不是x,y 
    12         }
    13 
    14     for(int i = x + len;i < x + len + len; ++ i)
    15         for(int j = y + len;j < y + len + len + len; ++ j){
    16             a[i][j] = a[i - len][j - len];
    17         }
    18 }
    19 
    20 int main(){
    21 //    freopen("2.txt","r",stdin);
    22 //    freopen("1.txt","w",stdout);
    23 //注意注销文件
    24 //还是对拍比较靠谱
    25 //肉眼看不出来 
    26     scanf("%d",&n);
    27     
    28     for(int i = 0;i <= (1<<n) + 5;++i) 
    29         for(int j = 0;j <= (1<<(n + 1)) + 5;++j)
    30             a[i][j] = ' '; //高(1<<n),宽(1<<(n + 1))
    31     
    32     MAXN = ((1 << n));
    33     a[1][MAXN] = '/';
    34     a[1][MAXN + 1] = '\';
    35     a[2][MAXN] = '_'; 
    36     a[2][MAXN + 1] = '_'; 
    37     a[2][MAXN - 1] = '/'; 
    38     a[2][MAXN + 2] = '\';//一个斜杠是转义字符 
    39     
    40     for(int i = 1;i < n; ++ i){
    41         int len = (1 << i);
    42         Copy(1,MAXN - len + 1,len);
    43     }
    44     int end = MAXN + 1;
    45     for(int i = 1;i <= MAXN ;++ i){
    46         end ++ ;
    47         for(int j = 1;j <= end ; ++ j){
    48             putchar(a[i][j]);
    49         }
    50         putchar('
    ');
    51     }
    52     
    53     return 0;
    54 }
    View Code
    非做顽石不可,哪管他敬仰暗唾
  • 相关阅读:
    Eclipse怎么汉化
    eclipse的 project explore找不到了, 怎么把复制来的包放在project explore
    三 地图的绘制
    二 CheatEngine怎么提取地图数据
    一. 透明坦克跑起来
    第七章 继承与派生
    Quoit Design HDU
    C++学习_从C到C++
    C++学习_一道程序填空题重拾C++
    网络爬虫_BeautifulSoup库入门
  • 原文地址:https://www.cnblogs.com/Mandy-H-Y/p/11392529.html
Copyright © 2011-2022 走看看