本题地址: http://www.luogu.org/problem/show?pid=1498
题目描述
自从到了南蛮之地,孔明不仅把孟获收拾的服服帖帖,而且还发现了不少少数民族的智慧,他发现少数民族的图腾往往有着一种分形的效果(看Hint),在得到了酋长的传授后,孔明掌握了不少绘图技术,但唯独不会画他们的图腾,于是他找上了你的爷爷的爷爷的爷爷的爷爷……帮忙,作为一个好孙子的孙子的孙子的孙子……你能做到吗?
输入输出格式
输入格式:
每个数据一个数字,表示图腾的大小(此大小非彼大小) n<=10
输出格式:
这个大小的图腾
输入输出样例
输入样例#1:
2
输出样例#1:
题解
一开始,这题我成功地理解错了题意……本应是这样的:
我当成了这样:
错解敲完忘交上去,后来瞄了眼题解……
感觉整个人都不好了。
不说了,讲正解:
这题就是简单的递归分治,处理下那些乱七八糟的杠间的距离,注意下高度啊长度啊……扯不下去了。只要不抽就没啥问题……
(话说都这些题都好简单啊……)
啊对了,好像有人想直接打出来,然后……
然后编辑器就装不下了[笑哭]
#include<cstdio>
using namespace std;
char pic[1<<12][1<<12];
void build_pic(int x,int y,int n)
{
if(n!=1)
{
build_pic(x,y+(1<<n),n-1);
build_pic(x-(1<<(n-1)),y+(1<<(n-1)),n-1);
build_pic(x,y,n-1);
}
else
{
pic[x][y]=pic[x-1][y+1]='/';
pic[x][y+1]=pic[x][y+2]='_';
pic[x][y+3]=pic[x-1][y+2]='\\';//两个杠
}
}
int main()
{
int n;
scanf("%d",&n);
int l=(1<<(n+1)),h=(1<<n);
for(int j=1;j<=l;j++)
for(int i=1;i<=h;i++)
pic[i][j]=' ';
build_pic(h,1,n);
for(int i=1;i<=h;i++)
{
for(int j=1;j<=l;j++)
printf("%c",pic[i][j]);
printf("\n");
}
return 0;
}