您的位置:首页 > 其它

hdu 2074 叠筐(数论)

2013-04-04 16:37 381 查看

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: