美文网首页C++程序员互联网科技
小朋友学OJ-1079 放大的X

小朋友学OJ-1079 放大的X

作者: 海天一树X | 来源:发表于2018-05-18 11:51 被阅读19次

    题目:
    http://oj.jzxx.net/problem.php?id=1079

    程序:

    #include <iostream>
    using namespace std;
    
    
    /*
     * 因为图形上下对称,所以构造一个关于对称的预处理映射函数
     * 比如,n = 5时:第0行和第4行对称,第1行和第3行对称
     * 注意,本题若从0开始计算行,则第0行左边的空格数为0,第1行左边的空格数为1,……
     *       若从1开始计算行,也可以,但计算会略麻烦点
     */
    int premap(int x, int n)
    {
        return x > n/2 ? n + 1 - x : x;
    }
    
    
    int main()
    {
        int n;
        cin >> n;
    
    
        for(int i = 1;  i<= n; i++)
        {
            int mIndex = premap(i, n);
    
            // 左边的空格
            for(int j = 1; j < mIndex; j++)
            {
                cout << ' ';
            }
    
            // 左边的X
            cout << 'X';
    
            // 中间的空格
            for(int k = 1; k <= n - 2 * mIndex; k++)
            {
                cout << ' ';
            }
    
            // 右边的X,注意中间那行只有一个X
            if(i != (n/2 + 1))
            {
                cout << 'X';
            }
    
            cout << endl;
        }
    
        return 0;
    }
    

    TopCoder & Codeforces & AtCoder交流QQ群:648202993
    更多内容请关注微信公众号


    wechat_public_header.jpg

    相关文章

      网友评论

        本文标题:小朋友学OJ-1079 放大的X

        本文链接:https://www.haomeiwen.com/subject/axqgdftx.html