1307.JY的分形绘画室
Description
JY的完美绘画教室~
今天要教的是分形图形,它是一类递归定义的图形,在这里举一个例子。
这个图形的每一层都由3个下一层的图形拼凑而成,现在我们可以编程来画一个简单的版本,你能实现吗?
一个正整数N, 1<=n<=10,表示规模(具体意义见样例)。
图形,具体见样例。
3
Sample Output
/\
/__\
/\ /\
/__\/__\
/\ /\
/__\ /__\
/\ /\ /\ /\
/__\/__\/__\/__\
题目中文,没什么多说的,输入几就打印出来几层就行,写一个递归函数打印出来就好,貌似这题数据很水看着之前有人交的73B就通过了= =算了,不去试水了,还是老实递归吧。
下面AC代码:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<math.h>
using namespace std;
char a[2050][1030];
int out(int n,int x,int y)
{
if(n==1)
{
a[x][y]=' ';
a[x][y+1]='/';
a[x][y+2]='\\';
a[x][y+3]=' ';
a[x+1][y]='/';
a[x+1][y+1]='_';
a[x+1][y+2]='_';
a[x+1][y+3]='\\';
return 0;
}
int s=pow(2,n-1);
int e=pow(2,n-1);
out(n-1,x,y);
out(n-1,x+s,y+e);
out(n-1,x+s,y-e);
return 0;
}
int main()
{
int n;
int i;
while(scanf("%d",&n)!=EOF)
{
memset(a,' ',sizeof(a));
int s=pow(2,n);
int e=pow(2,n+1);
out(n,0,e/2-1);
//cout<<s<<" "<<e<<endl;
for(i=0;i<s;i++)
{
a[i][e+1]='\0';
}
for(i=0;i<s;i++)
{
cout<<a[i]<<endl;
}
}
return 0;
}