题目链接:http://poj.org/problem?id=2083

这题不能用G++提交...

见到两次知道有递归的写法,然而并不会,这次发现并不难;

#include<stdio.h>
#include<string.h>
#include<iostream>
using namespace std; int len[]= {,}, s[][]; void dfs(int n, int x, int y)
{
s[x][y]=;
if(n==)return ; int m = len[n]; dfs(n+, x, y);///左上
dfs(n+, x, y+*m);///左下
dfs(n+, x+*m, y);///右上
dfs(n+, x+m, y+m);///中间
dfs(n+, x+*m, y+*m);///右下
} int main()
{
memset(s, , sizeof(s));
for(int i=; i<=; i++)
len[i]=*len[i-];
dfs(, , );
int n;
while(scanf("%d", &n), n!=-)
{
for(int i=; i<=len[n]; i++)
{
for(int j=; j<=len[n]; j++)
{
if(s[i][j]==)printf("X");
else printf(" ");
}
printf("\n");
}
printf("-\n");
}
return ;
}

下面是我写的比较恶心的代码:

#include<stdio.h>
#include<string.h>
#define N 903
#define met(a, b) memset(a, b, sizeof(a)) struct node
{
int len;
char s[N][N];
}a[]; void P1(char s[][N], int X1, int X2, int Y1, int Y2, char s0[][N])
{
for(int i=X1, p=; i<=X2; i++, p++)
{
for(int j=Y1, q=; j<=Y2; j++, q++)
{
s[i][j] = s0[p][q];
}
}
}
void P2(char s[][N], int X1, int X2, int Y1, int Y2)
{
for(int i=X1; i<=X2; i++)
{
for(int j=Y1; j<=Y2; j++)
{
s[i][j] = ' ';
}
}
}
void Init()
{
met(a, );
a[].s[][] = 'X';
a[].len = ; for(int i=; i<=; i++)
{
int n = a[i-].len;
a[i].len = n*; P1(a[i].s, , n-, , n-, a[i-].s);
P2(a[i].s, , n-, n, *n-);
P1(a[i].s, , n-, *n, *n-, a[i-].s); P2(a[i].s, n, *n-, , n-);
P1(a[i].s, n, *n-, n,*n-, a[i-].s);
P2(a[i].s, n, *n-, *n, *n-); P1(a[i].s, *n, *n-, , n-, a[i-].s);
P2(a[i].s, *n, *n-, n, *n-);
P1(a[i].s, *n, *n-, *n, *n-, a[i-].s);
}
} int main()
{
Init();
int n;
while(scanf("%d", &n), n!=-)
{
for(int i=; i<a[n].len; i++)
{
for(int j=; j<a[n].len; j++)
printf("%c",a[n].s[i][j]);
printf("\n");
}
printf("-\n");
}
return ;
}

Fractal---poj2083(递归和普通方法打印图形)的更多相关文章

  1. for 循环打印图形

    public class For { public static void main(String[] args) { //"使用双层for循环打印图形时,外层管行,内层管列",那 ...

  2. 打印图形|2014年蓝桥杯B组题解析第五题-fishers

    打印图形 小明在X星球的城堡中发现了如下图形和文字: rank=3 rank=5 rank = 6 小明开动脑筋,编写了如下的程序,实现该图形的打印. 答案:f(a, rank-1, row, col ...

  3. python中for嵌套打印图形

    # 打印出九九乘法表 1 * 1 = 1 2 * 1 = 2 2 * 2 = 4 3 * 1 = 3 3 * 2 = 6 3 * 3 = 9 4 * 1 = 4 4 * 2 = 8 4 * 3 = 1 ...

  4. C#统计给定的文本中字符出现的次数,使用循环和递归两种方法

    前几天看了一个.net程序员面试题目,题目是”统计给定的文本中字符出现的次数,使用循环和递归两种方法“. 下面是我对这个题目的解法: 1.使用循环: /// <summary> /// 使 ...

  5. 关于js回调方法 js递归时使用方法

    js中递归调用本身可以这样: function a1(n){ a1(n)}但是如果需要在参数n进行自增的情况下判断会出错: function a1(n){ if(n>10) return 'aa ...

  6. PHP实现数组递归转义的方法

    本文以实例形式讲述了PHP实现数组递归转义的方法,分享给大家供大家参考之用.具体方法如下: 主要功能代码如下: $arr = array('a"aa',array("c'd&quo ...

  7. javaScript 对象的hasOwnProperty方法打印window自定义属性

    for (var name in window) { if (window.hasOwnProperty(name)) { window.console.log ( name + " : & ...

  8. [Python] For 嵌套循环打印图形 nested loop-练习题答案

    前一篇:[Python] For 嵌套循环打印图形 nested loop-练习题 [python的for循环嵌套打印如下图形] 图形一: 输出结果: ******* ******* ******* ...

  9. [Python] For 嵌套循环打印图形 nested loop - 练习题

    [python的for循环嵌套打印如下图形] 图形一: ******* ******* ******* ******* 图形二: * *** ***** ******* 图形三: * *** **** ...

随机推荐

  1. cocos2dx遇到的一些坑

    针对2.x 1.CCSprite无法直接用文件名更换图片,可以添加如下函数 bool CCSprite::setWithFile(const char *pszFilename) { CCAssert ...

  2. RabbitMQ之任务队列【译】

    在第一个教程里面,我们写了一个程序从一个有名字的队列中发送和接收消息,在这里我们将要创建一个分发耗时任务给多个worker的任务队列. 任务队列核心思想就是避免执行一个资源密集型的任务,而程序要等待其 ...

  3. 小贝_redis 高级应用-事务

    redis高级应用-事务 一.redis的事务 二.redis实现事务 三.redis事务问题 一.redis的事务 事务提供了一种"将多个命令打包,然后一次性.按顺序地运行"的机 ...

  4. C语言中对输入输出格式的控制

    格式化输出的控制 #include<stdio.h> int main(void){ float a=111123.681111f; printf("%1.3f",a) ...

  5. Linux环境PHP7.0.2安装

    PHP7和HHVM比较PHP7的在真实场景的性能确实已经和HHVM相当, 在一些场景甚至超过了HHVM.HHVM的运维复杂, 是多线程模型, 这就代表着如果一个线程导致crash了, 那么整个服务就挂 ...

  6. Python之并行

    http://www.open-open.com/news/view/1c0179b/

  7. ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务

    ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件.它是一个为分布式应用提供一致性服务的软件,提供的功 ...

  8. android 开发之hello world!

    http://blog.sina.com.cn/s/blog_4e08922b0100nh6e.html http://blog.csdn.net/poechant/article/details/7 ...

  9. 【theano】tutorial

    http://deeplearning.net/software/theano/tutorial/index.html#tutorial

  10. jhipster(springboot+datatable+jpa)后台分页,总结

    最近用datatable做了一个后台分页,但是后台实体原本没写DTO.就碰到的问题做了一下总结 一.datatable使用get方式传数据到后台,这是正常的后台分页,不涉及过滤查询和前端传递的排序字段 ...