poj 3768 递归(绘制图形)
2014-07-08 19:24
330 查看
题意:递归打印图形
思路:根据位置递归绘制。注意:需整行读入与输出。用getchar、putchar会超时。
输入:
4
OO
O O
O O
OO
2
0
输出:
OO OO
O OO O
O OO O
OO OO
OO OO
O O O O
O O O O
OO OO
OO OO
O O O O
O O O O
OO OO
OO OO
O OO O
O OO O
OO OO
思路:根据位置递归绘制。注意:需整行读入与输出。用getchar、putchar会超时。
输入:
4
OO
O O
O O
OO
2
0
输出:
OO OO
O OO O
O OO O
OO OO
OO OO
O O O O
O O O O
OO OO
OO OO
O O O O
O O O O
OO OO
OO OO
O OO O
O OO O
OO OO
#include <stdio.h> #include <string.h> #include <math.h> #define N 3002 char s ,t[6][6]; int n,m,scale; void print(int x,int y,int lev){ int i,j; if(lev == 1){ for(i = 0;i<n;i++) for(j = 0;j<n;j++) if(t[i][j]!=' ') s[x+i][y+j] = t[i][j]; } else{ for(i = 0;i<n;i++) for(j = 0;j<n;j++) if(t[i][j]!=' ') print((int)(x+i*pow(n,(lev-1))),(int)(y+j*pow(n,(lev-1))),lev-1); } } int main(){ freopen("a.txt","r",stdin); while(scanf("%d",&n) && n){ int i; memset(s,' ',sizeof(s)); getchar();//读入数字后面的回车 for(i = 0;i<n;i++) gets(t[i]); scanf("%d",&m); scale = (int)pow(n,m); print(0,0,m); for(i = 0;i<scale;i++){ s[i][scale] = '\0';//不要忘记!! puts(s[i]); } } return 0; }
相关文章推荐
- POJ 2083 递归绘制图形
- 【递归输出图形】POJ_1941
- 有趣的分形图形-递归和数学方法解决-POJ 2083
- poj 1941 递归输出图形(Sierpinski Fractal)
- 递归绘制图形
- poj 2083 Fractal 递归 图形打印
- poj1941 The Sierpinski Fractal(递归输出图形)
- poj 1941 The Sierpinski Fractal(递归打印图形)
- poj 3768 Repeater 递归
- POJ 3768(分形+递归)
- 【深入浅出IOS开发】使用路径进行绘制图形
- Android画布和图形绘制---Canvas and Drawables(一)
- poj 3077 递归
- CSS3属性border-radius绘制多种多样的图形
- IOS Quartz 各种绘制图形用法---实现画图片、写文字、画线、椭圆、矩形、棱形等
- android游戏开发框架libgdx的使用(二)--图形绘制
- 网页绘制简单图形用代码怎么弄?
- POJ 3295 递归模拟
- Quart 2D 绘制图形简单总结
- iOS 图形绘制<一> 利用Quartz2D绘制直线