zoukankan      html  css  js  c++  java
  • 九度OJ 1345:XXX定律之画X (递归)

    时间限制: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.    
    5. #define N (int)(pow(3, 6))  
    6.    
    7. int p[N][N];  
    8.    
    9. void set(int n, int x, int y)  
    10. {  
    11.     if (n == 1)  
    12.     {  
    13.         p[x][y] = 1;  
    14.         return;  
    15.     }  
    16.     int s = pow(3, n-2);  
    17.     set(n-1, x, y);  
    18.     set(n-1, x+s, y+s);  
    19.     set(n-1, x+2*s, y);  
    20.     set(n-1, x, y+2*s);  
    21.     set(n-1, x+2*s, y+2*s);  
    22. }  
    23.    
    24. void print(int n)  
    25. {  
    26.     int size = pow(3, n-1);  
    27.     for (int i=0; i<size; i++)  
    28.     {  
    29.         for (int j=0; j<size; j++)  
    30.         {  
    31.             if (p[i][j] == 0)  
    32.                 printf(" ");  
    33.             else  
    34.                 printf("X");  
    35.         }  
    36.         printf(" ");  
    37.     }  
    38.     printf("# ");  
    39. }  
    40.    
    41. int main(void)  
    42. {  
    43.     int n;  
    44.     while (scanf("%d", &n) != EOF)  
    45.     {  
    46.         if (n <= 0)  
    47.             break;  
    48.         memset(p, 0, sizeof(p));  
    49.         set(n, 0, 0);  
    50.         print(n);  
    51.     }  
    52.    
    53.     return 0;  
    54. }  
    55. /************************************************************** 
    56.     Problem: 1345 
    57.     User: liangrx06 
    58.     Language: C 
    59.     Result: Accepted 
    60.     Time:80 ms 
    61.     Memory:3080 kb 
    62. ****************************************************************/
  • 相关阅读:
    TweenAlpha的使用
    NGUI Slider
    Unity 在Resources加载类型的文件
    NGUI-UIProgressBar
    unity NGUI Grid
    我靠 什么鬼
    unity判断平台
    unity和Android交互
    unity导出的Android工程导入eclipse时报错
    实现播放完Animate后执行一个方法
  • 原文地址:https://www.cnblogs.com/liangrx06/p/5083788.html
Copyright © 2011-2022 走看看