zoukankan      html  css  js  c++  java
  • POJ 2876 Cantoring Along

    Description

    The Cantor set was discovered by Georg Cantor. It is one of the simpler fractals. It is the result of an infinite process, so for this program, printing an approximation of the whole set is enough. The following steps describe one way of obtaining the desired output for a given order Cantor set:
    1. Start with a string of dashes, with length 3order
    2. Replace the middle third of the line of dashes with spaces. You are left with two lines of dashes at each end of the original string.
    3. Replace the middle third of each line of dashes with spaces. Repeat until the lines consist of a single dash.
    For example, if the order of approximation is 3, start with a string of 27 dashes:
    ---------------------------
    Remove the middle third of the string:
    ---------         ---------
    and remove the middle third of each piece:
    ---   ---         ---   ---
    and again:
    - -   - -         - -   - -
    The process stops here, when the groups of dashes are all of length 1. You should not print the intermediate steps in your program. Only the final result, given by the last line above, should be displayed. 

    Input

    Each line of input will be a single number between 0 and 12, inclusive, indicating the order of the approximation. The input stops when end-of-file is reached.

    Output

    You must output the approximation of the Cantor set, followed by a newline. There is no whitespace before or after your Cantor set approximation. The only characters that should appear on your line are '-' and ' '. Each set is followed by a newline, but there should be no extra newlines in your output.

    Sample Input

    0
    1
    3
    2

    Sample Output

    -
    - -
    - -   - -         - -   - -
    - -   - -

    【思路】:递归题,用时稍久,希望你写出用时更短的代码。我们可以将一个数组赋值为空格,然后对该数组进行分割,同样满足题意,每次丢掉中间的三分之一,然后递归循环此过程,将其划分的更小,直到分割到长度为1,结束返回。。
    #include <iostream>
    #include <cmath>
    using namespace std;
    
    void along(int Along)
    {
        if(Along<3)
        {
            cout<<'-';
        }
        else
        {
            if(Along>=3)
                along(Along/3);
            for(int i=1;i<=Along/3;i++)//这儿应该是  Along/3  假如是你之前的话  打印较多的空格  你仔细看一下 
                cout<<" ";
            if(Along>=3)
                along(Along/3);    
        }
    }
    
    int main()
    {
        int n;
        while(cin>>n)
        { 
            int Along=(int)pow(3.0,n);
            along(Along);
            cout<<endl;
        }
        return 0;
    }
    View Code
  • 相关阅读:
    js 性能调试
    js 面向对象编程
    js 零碎
    如果遇到二维数组 想取某个字段的和
    昨天写支付接口时遇到支付接口返回数据接收地址,session数据丢失(或者说失效)的问题
    mysql报错: 1548-Cannot load from mysql.proc. The table is probably corrupted 解决办法
    php 时间倒计时代码 个人写法 有好的想法的欢迎贴出来分享
    linux 环境下安装mysql5.6
    关于数据库连接不上 出现错误的问题
    推荐一个不错的css3网站 可以直接调用的
  • 原文地址:https://www.cnblogs.com/wft1990/p/6055916.html
Copyright © 2011-2022 走看看