#include <iostream>
#include <stdio.h>
#include <cstring>
using namespace std;
#define MAX_N 1000
char r[MAX_N][MAX_N];
int solve(int n,int si,int sj)
{
if( n == 1)
{
r[si][sj]='X';
return 1;
}
int m = 0;
m =solve(n-1,si,sj);
m =solve(n-1,si+2*m ,sj);
m =solve(n-1,si+m,sj+m);
m =solve(n-1,si,sj+2*m);
m =solve(n-1,si+2*m,sj+2*m);
return 3*m;
}
int main()
{
int n;
while(cin>>n)
{
if(n < 0)
break;
memset(r,' ',sizeof(r));
int ret = solve(n,1,1);
for(int i=1;i<=ret;i++)
{
int k =ret;
//找到这一行最后一个X,后面不输出空格了。
for(; k>= 1;k--)
{
if(r[i][k] == 'X')
break;
}
for(int j=1;j<=k;j++)
{
cout<<r[i][j];
}
cout<<endl;
}
cout<<"-"<<endl;
}
}
poj 2083 Fractal 递归
最新推荐文章于 2021-05-09 23:47:52 发布