现在的位置: 首页 > 综合 > 正文

hdu 2074 叠筐(数论)

2012年03月31日 ⁄ 综合 ⁄ 共 1306字 ⁄ 字号 评论关闭

hdu 2074 叠筐

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

 

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

 

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

 

Sample Input11 B A5 @ W 

 

Sample Output AAAAAAAAA ABBBBBBBBBAABAAAAAAABAABABBBBBABAABABAAABABAABABABABABAABABAAABABAABABBBBBABAABAAAAAAABAABBBBBBBBBA AAAAAAAAA @@@ @WWW@@W@W@@WWW@ @@@

 

C++代码如下:

#include<iostream>
using namespace std;
int main()
{
    char a,b,t;
    int n,i,j;
    char str[90][90];
    int r=0;
    while(cin>>n>>a>>b)
    {
        if(r++)
            cout<<endl;
        if(n==1)
        {
            cout<<a<<endl;
            continue;
        }
        if(n%4==1)
            t=a,a=b,b=t;
        for(i=0;i<n;i++)
            str[0][i]=b;
        for(i=1;i<=n/2;i++)
        {
            memcpy(str[i],str[i-1],sizeof(str[i-1]));
            for(j=i;j<n-i;j++)
                if(i%2==0)
                    str[i][j]=b;
                else
                    str[i][j]=a;
        }
        str[0][0]=str[0][n-1]=' ';
        for(i=0;i<=n/2;i++)
        {
            for(j=0;j<n;j++)
            {
                cout<<str[i][j];
            }
            cout<<endl;
        }
        for(i=n/2-1;i>=0;i--)
        {
            for(j=0;j<n;j++)
            {
                cout<<str[i][j];
            }
            cout<<endl;
        }
    }
    return 0;
}

抱歉!评论已关闭.