时间限制: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. tensorflow dynamic rnn源码分析

    python3.6,tensorflow1.11 测试代码: tensorflow在eager模式下进行测试,方便调试,查看中间结果 import tensorflow as tf tf.enable ...

  2. SparkMLlib基础内容

    SparkMLlib基础内容 (一),多种数据类型 1.1 本地向量集 def testVetor: Unit ={ val vd:Vector=Vectors.dense(2,3,6) printl ...

  3. 【重点突破】—— Easy Mock的使用及Mock.js规范

    前言:在线使用Easy Mock可视化工具,可以提供快速生成“模拟数据”的持久化服务: Mock.js是一个JS插件,指定了一套规范,而Easy Mock工具就遵循这些规范.  一.Easy Mock ...

  4. ElasticSearch Java Api-删除索引

    删除可以是删除整个索引库,也可以根据文档id删除索引库下的文档,还可以通过query查询条件删除所有符合条件的数据. 一.删除整个索引库 下面的例子会删除indexName索引: DeleteInde ...

  5. Linux Oracle数据库的安装

    // 注释 # root用户 $oracle用户 1. 关闭安全措施    # chkconfig iptables off // 永久关闭防火墙 # serviceiptables stop // ...

  6. 标准库Allocator(三)uninitialized_fill等函数的实现

    前面我们使用了uninitialized_fill,来批量初始化某一段内存. 下面提供三个函数的实现代码,这三个代码的共同点是: 1.遇到错误,抛出异常 2.出现异常时,把之前构造的对象全部销毁 所以 ...

  7. python——iterator迭代器|iterator详解——20140918|

    -----------------------------------------------------------------------------前言--------------------- ...

  8. 自定义 alert 弹窗

    1.css样式 li-alert.css @-webkit-keyframes opacity { 0% { opacity: 0; /*初始状态 透明度为0*/ } 50% { opacity: 0 ...

  9. 渐进式 JPEG (Progressive JPEG)来提升用户体验

    1.概述 jpg格式分为:Baseline JPEG(标准型)和Progressive JPEG(渐进式).两种格式有相同尺寸以及图像数据,扩展名也是相同的,唯一的区别是二者显示的方式不同. Base ...

  10. 【VBA】复制单元格批注

    只复制单元格的批注该怎么操作呢?代码如下: Public Sub 复制单元格批注() Dim range1 As range Dim range2 As range '清除G列 Columns(&qu ...