• 叠筐所想!


    题目参考:http://blog.csdn.net/akof1314/article/details/5074694

    Problem Description:

    需要的时候,就把一个个大小差一圈的筐叠上去,使得 从上往下看时,边筐花色交错。这个工作现在要让计算机来完成,得看你的了。

    Input

    输入是一个个的三元组,分别是,外筐尺寸n(n为满足0<n<80的奇整数),中心花色字符,外筐花色字符,后二者都为ASCII可见字符;

    Output

    输出叠在一起的筐图案,中心花色与外筐花色字符从内层起交错相叠,多筐相叠时,最外筐的角总是被打磨掉。叠筐与叠筐之间应有一行间隔。

     



    解题:

          题目不难理解,答案却很难理解。要输出这样的格式不难,但是会PE、会WA。关键在于题目未说明四个角是空格还是结束符,每个例子是不是都有间隔?

          1. 四个角都是空格

          2.每个例子是在下一个例子出现才有空格。

    当题目中的输出格式含糊时,需要仔细思考,输出的格式到底应该是什么样子!


    我的AC程序源码:


    #include <iostream>

    using namespace std;

    int main()

    {

    int n;

    char l,w;

    char in,out;

    bool qian = false;

    while(cin >> n >> l >> w)

    {

    if(!qian)

    {

    qian = true;

    }

    else

    {

    cout << endl;

    }

    if( (n/2 + 1) % 2 == 0)

    {

    out  = w;

    in = l;

    }

    else

    {

    out = l;

    in  = w;

    }


    for(int i = 1; i <= n/2; i++)

    {

    if(i == 1)

    {

    cout << " ";

    for(int j = 2; j < n; j++)

    {

    cout << out;

    }

    cout <<" " << endl;

    }

    else

    {

    int ci = i /2;

    if(i % 2 == 0)

    {

    //ci ge ab

    for(int j = 0;j < ci; j++)

    {

    cout << out << in;

    }


    //begin:ci*2+1;end:n-ci*2

    for(int j = ci*2 + 1; j <= n-ci*2; j++)

    {

    cout << in;

    }


    for(int j = 0; j <ci; j++)

    {

    cout << in << out;

    }

    cout << endl;

    }

    else

    {

    //ci ge ab

    for(int j  =0; j < ci; j++)

    {

    cout << out << in;

    }


    cout << out;

    //begin:ci*2+2;end:n-ci*2-1

    for(int j = ci*2 + 2; j <= n-ci*2-1; j++ )

    {

    cout << out;

    }

    cout << out;


    for(int j  =0; j <ci; j++)

    {

    cout << in  << out;

    }

    cout << endl;

    }

    }

    }


    for(int i = 1;i <= n/2;i++)

    {

    cout << out << in;

    }

    cout << out << endl;


    for(int i = n/2+2; i <=n; i++)

    {

    if(i == n)

    {

    cout << " ";

    for(int j = 2; j < n; j++)

    {

    cout << out;

    }

    cout <<" " << endl;

    }

    else

    {

    int ci = (n-i + 1)/2;

    if(i % 2 == 0)

    {

    //ci ge ab

    for(int j = 0;j < ci; j++)

    {

    cout << out << in;

    }


    //begin:ci*2+1;end:n-ci*2

    for(int j = ci*2 + 1; j <= n-ci*2; j++)

    {

    cout << in;

    }


    for(int j = 0; j <ci; j++)

    {

    cout << in << out;

    }

    cout << endl;

    }

    else

    {

    //ci ge ab

    for(int j  =0; j < ci; j++)

    {

    cout << out << in;

    }


    cout << out;

    //begin:ci*2+2;end:n-ci*2-1

    for(int j = ci*2 + 2; j <= n-ci*2-1; j++ )

    {

    cout << out;

    }

    cout << out;


    for(int j  =0; j <ci; j++)

    {

    cout << in  << out;

    }

    cout << endl;

    }


    }

    }


    }


    return 0;

    }





    LOFTER:hgfalgorithm   http://hgfal.lofter.com/post/28eef2_f35165
  • 相关阅读:
    通过asp.net 生成xml文件
    listbox 多选处理
    girdview 找到其焦点的笨办法
    关于.net 中调用script的alert后 css失效的办法
    从数据库中读数据中寻找若隐若现的OOP
    Gitlab的安装部署和介绍
    守住你的网站:防御DDoS攻击指南
    分析SQL语句使用资源情况
    Linux下Sniffer程序的实现
    NDIS resources
  • 原文地址:https://www.cnblogs.com/hgfgood/p/4248319.html
Copyright © 2020-2023  润新知