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

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

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

  1. #include<stdio.h>
  2. #include<string.h>
  3. #include<iostream>
  4. using namespace std;
  5.  
  6. int len[]= {,}, s[][];
  7.  
  8. void dfs(int n, int x, int y)
  9. {
  10. s[x][y]=;
  11. if(n==)return ;
  12.  
  13. int m = len[n];
  14.  
  15. dfs(n+, x, y);///左上
  16. dfs(n+, x, y+*m);///左下
  17. dfs(n+, x+*m, y);///右上
  18. dfs(n+, x+m, y+m);///中间
  19. dfs(n+, x+*m, y+*m);///右下
  20. }
  21.  
  22. int main()
  23. {
  24. memset(s, , sizeof(s));
  25. for(int i=; i<=; i++)
  26. len[i]=*len[i-];
  27. dfs(, , );
  28. int n;
  29. while(scanf("%d", &n), n!=-)
  30. {
  31. for(int i=; i<=len[n]; i++)
  32. {
  33. for(int j=; j<=len[n]; j++)
  34. {
  35. if(s[i][j]==)printf("X");
  36. else printf(" ");
  37. }
  38. printf("\n");
  39. }
  40. printf("-\n");
  41. }
  42. return ;
  43. }

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

  1. #include<stdio.h>
  2. #include<string.h>
  3. #define N 903
  4. #define met(a, b) memset(a, b, sizeof(a))
  5.  
  6. struct node
  7. {
  8. int len;
  9. char s[N][N];
  10. }a[];
  11.  
  12. void P1(char s[][N], int X1, int X2, int Y1, int Y2, char s0[][N])
  13. {
  14. for(int i=X1, p=; i<=X2; i++, p++)
  15. {
  16. for(int j=Y1, q=; j<=Y2; j++, q++)
  17. {
  18. s[i][j] = s0[p][q];
  19. }
  20. }
  21. }
  22. void P2(char s[][N], int X1, int X2, int Y1, int Y2)
  23. {
  24. for(int i=X1; i<=X2; i++)
  25. {
  26. for(int j=Y1; j<=Y2; j++)
  27. {
  28. s[i][j] = ' ';
  29. }
  30. }
  31. }
  32. void Init()
  33. {
  34. met(a, );
  35. a[].s[][] = 'X';
  36. a[].len = ;
  37.  
  38. for(int i=; i<=; i++)
  39. {
  40. int n = a[i-].len;
  41. a[i].len = n*;
  42.  
  43. P1(a[i].s, , n-, , n-, a[i-].s);
  44. P2(a[i].s, , n-, n, *n-);
  45. P1(a[i].s, , n-, *n, *n-, a[i-].s);
  46.  
  47. P2(a[i].s, n, *n-, , n-);
  48. P1(a[i].s, n, *n-, n,*n-, a[i-].s);
  49. P2(a[i].s, n, *n-, *n, *n-);
  50.  
  51. P1(a[i].s, *n, *n-, , n-, a[i-].s);
  52. P2(a[i].s, *n, *n-, n, *n-);
  53. P1(a[i].s, *n, *n-, *n, *n-, a[i-].s);
  54. }
  55. }
  56.  
  57. int main()
  58. {
  59. Init();
  60. int n;
  61. while(scanf("%d", &n), n!=-)
  62. {
  63. for(int i=; i<a[n].len; i++)
  64. {
  65. for(int j=; j<a[n].len; j++)
  66. printf("%c",a[n].s[i][j]);
  67. printf("\n");
  68. }
  69. printf("-\n");
  70. }
  71. return ;
  72. }

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. django 运行不同的settings

    python manage.py runserver --settings=EMCRP.settings_local

  2. js 去html 标签

    var stylereg = /style\=".+?"/g //去style样式 var alltagreg = /<[^>]*>/g //去除全部标签 var ...

  3. keepalive脑裂的处理,从节点发现访问的虚拟IP就报警,同时尝试发送内容到主节点服务器关闭keepalive和nginx,或者关机

    解决keepalived脑裂问题   检测思路:正常情况下keepalived的VIP地址是在主节点上的,如果在从节点发现了VIP,就设置报警信息 脚本如下: 1 2 3 4 5 6 7 8 9 10 ...

  4. thinkphp 集成 twig模版引擎

    下载地址:https://github.com/fucongcong/ThinkPHPLevel/archive/master.zip 控制器格式为: <?php namespace Home\ ...

  5. 【MySql】脚本备份数据库

    #!/bin/bash #this is a script of mysql backup #Mysql="mysql" #MysqlDump="mysqldump&qu ...

  6. 越大优先级越高,优先级越高被OS选中的可能性就越大

    进程的休眠:Thread sleep(1000);//括号中以毫秒为单位 当main()运行完毕,即使在结束时时间片还没有用完,CPU也放弃此时间片,继续运行其他程序. Try{Thread.slee ...

  7. javascript实现URL编码与解码

    一.预备知识 URI是统一资源标识的意思,通常我们所说的URL只是URI的一种.典型URL的格式如下所示.下面提到的URL编码,实际上应该指的是URI编码. foo://example.com:804 ...

  8. JSON美化输出

    echo '{"a": 1, "b": 2}' | python -m json.tool 转自: http://blog.csdn.net/chosen0ne ...

  9. WinError 5

    IDE工具:pychrm 语言:python 在使用os模块修改路径名称时,总是会报 WinError 5 这个错误,就是拒绝访问,之前也遇见过,就是要操作的当前路径里有文件已经打开,代码不能再次访问 ...

  10. ios 从URL中截取所包含的参数,并且以字典的形式返回和参数字典转URL

    //字典转链接(参数) - (NSString *)keyValueStringWithDict:(NSDictionary *)dict { if (dict == nil) { return ni ...