时间限制:1 秒

内存限制:32 兆

特殊判题:否

提交:361

解决:157

题目描述:

给你一个n,然后让你输出F(n)

规则是这样的,F(n)的输出结果是:

F(n-1)     F(n-1)

      F(n-1)

F(n-1)      F(n-1)

F(1)的输出结果是:X

那么根据规则F(2)的输出结果应该是:

X X

 X 

X X

输入:

题目有多组输入,每组输入一个n(n<=7)。

当输入零或负数的时候结束输入。

输出:

对每组输入输出相应的F(n),每组输出最后一行是‘#’。

样例输入:
1
2
3
-1
样例输出:
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形状,因此每次更新只要更新当前边长的3倍,也就是面积的9倍的字符数组。

代码:

  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <math.h>
  4. #define N (int)(pow(3, 6))
  5. int p[N][N];
  6. void set(int n, int x, int y)
  7. {
  8. if (n == 1)
  9. {
  10. p[x][y] = 1;
  11. return;
  12. }
  13. int s = pow(3, n-2);
  14. set(n-1, x, y);
  15. set(n-1, x+s, y+s);
  16. set(n-1, x+2*s, y);
  17. set(n-1, x, y+2*s);
  18. set(n-1, x+2*s, y+2*s);
  19. }
  20. void print(int n)
  21. {
  22. int size = pow(3, n-1);
  23. for (int i=0; i<size; i++)
  24. {
  25. for (int j=0; j<size; j++)
  26. {
  27. if (p[i][j] == 0)
  28. printf(" ");
  29. else
  30. printf("X");
  31. }
  32. printf("\n");
  33. }
  34. printf("#\n");
  35. }
  36. int main(void)
  37. {
  38. int n;
  39. while (scanf("%d", &n) != EOF)
  40. {
  41. if (n <= 0)
  42. break;
  43. memset(p, 0, sizeof(p));
  44. set(n, 0, 0);
  45. print(n);
  46. }
  47. return 0;
  48. }
  49. /**************************************************************
  50. Problem: 1345
  51. User: liangrx06
  52. Language: C
  53. Result: Accepted
  54. Time:80 ms
  55. Memory:3080 kb
  56. ****************************************************************/

九度OJ 1345:XXX定律之画X (递归)的更多相关文章

  1. 九度oj 1031 xxx定律 2009年浙江大学计算机及软件工程研究生机试真题

    题目1031:xxx定律 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:5153 解决:3298 题目描述:     对于一个数n,如果是偶数,就把n砍掉一半:如果是奇数,把n变成 3*n ...

  2. 九度OJ 1255:骰子点数概率 (递归、DP)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:316 解决:29 题目描述: 把n个骰子扔在地上,所有骰子朝上一面的点数之和为S.输入n,打印出S的所有可能的值出现的概率. 输入: 输入包 ...

  3. 九度OJ 1081:递推数列 (递归,二分法)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:6194 解决:864 题目描述: 给定a0,a1,以及an=p*a(n-1) + q*a(n-2)中的p,q.这里n >= 2. 求第 ...

  4. 【九度OJ】题目1172:哈夫曼树 解题报告

    [九度OJ]题目1172:哈夫曼树 解题报告 标签(空格分隔): 九度OJ http://ac.jobdu.com/problem.php?pid=1172 题目描述: 哈夫曼树,第一行输入一个数n, ...

  5. 【九度OJ】题目1475:IP数据包解析 解题报告

    [九度OJ]题目1475:IP数据包解析 解题报告 标签(空格分隔): 九度OJ http://ac.jobdu.com/problem.php?pid=1475 题目描述: 我们都学习过计算机网络, ...

  6. 【九度OJ】题目1073:杨辉三角形 解题报告

    [九度OJ]题目1073:杨辉三角形 解题报告 标签(空格分隔): 九度OJ http://ac.jobdu.com/problem.php?pid=1073 题目描述: 输入n值,使用递归函数,求杨 ...

  7. 九度oj 题目1087:约数的个数

    题目链接:http://ac.jobdu.com/problem.php?pid=1087 题目描述: 输入n个整数,依次输出每个数的约数的个数 输入: 输入的第一行为N,即数组的个数(N<=1 ...

  8. 九度OJ 1502 最大值最小化(JAVA)

    题目1502:最大值最小化(二分答案) 九度OJ Java import java.util.Scanner; public class Main { public static int max(in ...

  9. 九度OJ,题目1089:数字反转

    题目描述: 12翻一下是21,34翻一下是43,12+34是46,46翻一下是64,现在又任意两个正整数,问他们两个数反转的和是否等于两个数的和的反转. 输入: 第一行一个正整数表示测试数据的个数n. ...

随机推荐

  1. (转)指针的引用(*&)与指针的指针(**)

    本文转载而来,转载出处:http://www.cppblog.com/doing5552/archive/2010/09/28/127994.html 在下列函数声明中,为什么要同时使用*和& ...

  2. Linux使用nginx部署Laravel

    问题描述 Laravel是PHP下当今最受欢迎的web应用开发框架,github上start数远超第二名Symfony,以前我用这个框架做项目的时候通常就是扔到apache里面,然后配置.htacce ...

  3. Hive设置参数的三种方法

    Hive提供三种可以改变环境变量的方法,分别是:(1).修改${HIVE_HOME}/conf/hive-site.xml配置文件:(2).命令行参数:(3).在已经进入cli时进行参数声明.下面分别 ...

  4. Commenting and uncommenting XML via Python

    转载: http://stackoverflow.com/questions/8764017/commenting-and-uncommenting-xml-via-python from xml.d ...

  5. 数据结构与算法——优先队列类的C++实现(二叉堆)

    优先队列简单介绍: 操作系统表明上看着是支持多个应用程序同一时候执行.其实是每一个时刻仅仅能有一个进程执行,操作系统会调度不同的进程去执行. 每一个进程都仅仅能执行一个固定的时间,当超过了该时间.操作 ...

  6. python的偏函数(partial)

    偏函数就是固定原函数的某个参数,比如newadd就是固定了add方法的第一个参数,让a=3,这样对newadd方法只要传入参数B就可以实现add方法了,刚看偏函数的写法可能会不适应,因为partial ...

  7. Linux上安装tomcat、jdk

    一.tomcat [上传 yum -y install lrzsz] 1.tar zxvf apache-tomcat-7.0.57.tar.gz 2. mv apache-tomcat-7.0.57 ...

  8. Ubuntu升级出现/boot空间不足解决(转)

    经常升级Linux内核,导致更新时警告/boot分区空间不足.这是以为多次升级内核后,导致内核版本太多,清理一下没用的内核文件就行了.命令如下: zht@zht-Ubuntu:~$ dpkg -l ' ...

  9. 【LoadRunner】安装LoadRunner

    LoadRunner安装 下载好LoadRunner安装包,点击运行 在点击安装后,会提示需要安装一下程序,直接点击[确定]安装即可. 上述程序安装完毕后,会自动弹出下面的窗口,点击[下一步] 选择[ ...

  10. 正则表达式Pattern ,Matcher

    正则表达式:符合一定规则的表达式 作用:用于专门操作字符串 特点:用于一些特定的符号来表示一些代码的操作,这样就简化代码的书写 学习正则表达式就是要学习一些特殊符号的使用 好处:简化对字符串复杂的操作 ...