您的位置:首页 > 其它

poj 2083 Fractal 递归

2013-09-10 19:36 495 查看
#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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: