zoukankan      html  css  js  c++  java
  • POJ 2083 Fractal

    题意:打印字母X

              n=1

                       X

              n=2 

                      X X

                       X

                     X X

    对于给出的n,输出打印机n层打印结果(  n<=7 ),输入多组数据,输入以 -1 结束

    每组数据输出完毕,下行输出一个 "-"。

     1 #include <iostream>
     2 #include <algorithm>
     3 #include <cstring>
     4 #include <stdio.h>
     5 #define rep(i,a,b) for(int i=(a);i<=(b);++i)
     6 #define per(i,a,b) for(int i=(a);i>=(b);++i)
     7 using namespace std;
     8 const int N=1e3+7;;
     9 char a[N][N];
    10 int Increase(int b)  //求行数
    11 {
    12     int ans=1,x=3;
    13     while(b)
    14     {
    15         if(b&1) ans*=x;
    16         b>>=1;
    17         x*=x;
    18     }
    19     return ans;
    20 }
    21 void dfs(int dep, int x,int y)
    22 {
    23     if(dep==1)
    24     {
    25         a[x][y]='X';
    26         return;
    27     }
    28     int z=Increase(dep-2); //求递增行数
    29     dfs(dep-1,x,y);  //左上角
    30     dfs(dep-1,x,y+z*2);  //右上角
    31     dfs(dep-1,x+z,y+z);   //中间
    32    // dfs(dep-1,x+z*2,y);  //左下角
    33     dfs(dep-1,x+z*2,y+z*2);  //右下角
    34     dfs(dep-1,x+z*2,y);  //左下角
    35 }
    36 int main()
    37 {
    38     int n;
    39     while(~scanf("%d",&n)&&n!=-1)
    40     {
    41         memset(a,0,sizeof(a));
    42         int len=Increase(n-1);//总的行数
    43         rep(i,0,len-1){
    44             rep(j,0,len-1){
    45                 a[i][j]=' ';
    46             }
    47             a[i][len]='';
    48         }
    49         dfs(n,0,0);
    50         rep(i,0,len-1) printf("%s
    ",a[i]);
    51         puts("-");
    52     }
    53     return 0;
    54 }
  • 相关阅读:
    export环境变量 & bash shell使用命令和环境变量
    crontab定时任务
    sh脚本
    Linux的用户及权限相关
    HTTP基础
    群晖Synology
    Cntlm
    oracle存储过程
    ORACLE 增加两列字段
    excel 公式 insert 语句
  • 原文地址:https://www.cnblogs.com/Edviv/p/12329750.html
Copyright © 2011-2022 走看看