您的位置:首页 > 其它

poj2083

2014-04-14 20:25 267 查看
Fractal

Time Limit: 1000MS Memory Limit: 30000K
Total Submissions: 7211 Accepted: 3514
Description

A fractal is an object or quantity that displays self-similarity, in a somewhat technical sense, on all scales. The object need not exhibit exactly the same structure at all scales, but the same "type" of structures must appear on all scales. 

A box fractal is defined as below : 
A box fractal of degree 1 is simply 



A box fractal of degree 2 is 

X X 



X X 

If using B(n - 1) to represent the box fractal of degree n - 1, then a box fractal of degree n is defined recursively as following 
B(n - 1)        B(n - 1)

B(n - 1)

B(n - 1)        B(n - 1)


Your task is to draw a box fractal of degree n.
Input

The input consists of several test cases. Each line of the input contains a positive integer n which is no greater than 7. The last line of input is a negative integer −1 indicating the end of input.
Output

For each test case, output the box fractal using the 'X' notation. Please notice that 'X' is an uppercase letter. Print a line with only a single dash after each test case.
Sample Input
1
2
3
4
-1

Sample Output
X
-
X X
X
X X
-
X X   X X
X     X
X X   X X
X X
X
X X
X X   X X
X     X
X X   X X
-
X X   X X         X X   X X
X     X           X     X
X X   X X         X X   X X
X X               X X
X                 X
X X               X X
X X   X X         X X   X X
X     X           X     X
X X   X X         X X   X X
X X   X X
X     X
X X   X X
X X
X
X X
X X   X X
X     X
X X   X X
X X   X X         X X   X X
X     X           X     X
X X   X X         X X   X X
X X               X X
X                 X
X X               X X
X X   X X         X X   X X
X     X           X     X
X X   X X         X X   X X
-


我想说这道题也让我觉得自己特菜,有一阵子没写题了。第一次提交‘-’没写上,后来注意到了还把‘-’写成‘_’,题量一定得提上去。后面算法的学习与数据结构的提高并重

#include<iostream>
#include<cmath>
#include<cstring>
using namespace std;
char c[730][730];
void print(int n,int x,int y){
if(n==1){
c[x][y]='X';
return;
}
int m=pow(3,n-2);
print(n-1,x,y);
print(n-1,x+2*m,y);
print(n-1,x+m,y+m);
print(n-1,x,y+2*m);
print(n-1,x+2*m,y+2*m);
}
int main(){
int n;
while(cin>>n&&n!=-1&&n>0&&n<=7){
memset(c,'0',sizeof(c));
print(n,0,0);
int t=pow(3,n-1);
for(int i=0;i<t;i++){
for(int j=0;j<t;j++)
if(c[i][j]=='X')cout<<'X';
else cout<<' ';
cout<<endl;
}
cout<<'-'<<endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: