首页 > 代码库 > poj 2083 Fractal 递归 图形打印
poj 2083 Fractal 递归 图形打印
题目链接:
http://poj.org/problem?id=2083
题目描述:
n = 1时,图形b[1]是X
n = 2时,图形b[2]是X X
X
X X
所以n时,图形b[n]是b[n-1] b[n-1]
b[n-1]
b[n-1] b[n-1]
解题思路:
用递归打印图形,存到二维数组里面,输出是一个矩形,竟然是一个矩形!!!!!!
代码:
1 #include <cmath> 2 #include <cstdio> 3 #include <cstring> 4 #include <cstdlib> 5 using namespace std; 6 #define maxn 740 7 char map[maxn][maxn]; 8 9 void dfs (int n, int x, int y);10 //n是b[n],(x,y)是b[n]左上那个点;11 int main ()12 {13 int i, j, n;14 while (scanf ("%d", &n), n != -1)15 {16 int m = (int)pow(3,n-1);17 for (i=0; i<=m; i++)18 {19 for (j=0; j<=m; j++)20 map[i][j] = ‘ ‘;21 map[i][m+1] = ‘\0‘;22 }23 dfs (n, 0, 0);24 for (i=0; i<m; i++)25 puts(map[i]);26 printf ("-\n");27 }28 return 0;29 }30 31 void dfs (int n, int x, int y)32 {33 if (n == 1)34 {35 map[x][y] = ‘X‘;36 return ;37 }38 int m = (int) pow (3, n-2);//b[n-1]的大小39 dfs (n-1, x, y);//up_left40 dfs (n-1, x, y+2*m);//up_right41 dfs (n-1, x+m, y+m);//middle42 dfs (n-1, x+2*m, y);//down_left43 dfs (n-1, x+2*m, y+2*m);//down_right44 }
poj 2083 Fractal 递归 图形打印
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。