vijos 1167 南蛮图腾(打印图案)

https://vijos.org/p/1167

描述

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

格式

输入格式

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

输出格式

这个大小的图腾

样例1

样例输入1[复制]

2

样例输出1[复制]

   /\
  /__\
 /\  /\
/__\/__\


init:提示:


 

#include<iostream>
#include<algorithm>
#include<stdio.h>
#include<math.h>
#include<string.h>
using namespace std;
char str[11][1030][1030];
int cp[]={1,2,4,8,16,32,64,128,256,512,1024};
int main()
{
    memset(str,0,sizeof(str));
    str[1][0][0]=' ';
    str[1][0][1]='/';
    str[1][0][2]='\\';
    str[1][1][0]='/';
    str[1][1][1]='_';
    str[1][1][2]='_';
    str[1][1][3]='\\';

    int i,j,k,space=0,cn;
    for(i=2;i<=10;i++)
    {
        cn=cp[i]-1;
        int temp=1;
        for(j=0;j<cp[i];j++)
        {
            
            int ts=cp[i]/2;
            for(k=0;k<ts&&j<cp[i]/2;k++)
            {
                str[i][j][k]=' ';
            }
            strcpy(&str[i][j][k],str[i-1][j%cp[i-1]]);    
            k+=strlen(str[i][j%cp[i]]);
            if(j>=cp[i]/2)
            {
                space=cp[i]/2-1-j%cp[i-1];
                int l;
                for(l=0;l<space;l++,k++)
                    str[i][j][k]=' ';
                strcpy(&str[i][j][k],str[i-1][j%cp[i-1]]);
            }
        }
    }
    int n;
    while(~scanf("%d",&n))
    {
        for(i=0;i<cp[n];i++)
            puts(str[n][i]);
    }
    return 0;
}

 

posted @ 2013-04-08 20:09  crazy_apple  阅读(577)  评论(0编辑  收藏  举报