您的位置:首页 > 其它

hdu-oj 2074 叠筐

2014-08-04 21:30 274 查看

叠筐

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)

Total Submission(s): 12157    Accepted Submission(s): 3135


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

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

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

[align=left]Sample Input[/align]

11 B A
5 @ W

 

[align=left]Sample Output[/align]

 AAAAAAAAA
ABBBBBBBBBA
ABAAAAAAABA
ABABBBBBABA
ABABAAABABA
ABABABABABA
ABABAAABABA
ABABBBBBABA
ABAAAAAAABA
ABBBBBBBBBA
AAAAAAAAA

@@@
@WWW@
@W@W@
@WWW@
@@@ 解题思路:字符交替围成一圈;附代码:
#include<stdio.h>
int main()
{
int n,i,j,flag=0,l=0;
char a,b,str[81][81],temp;
while(scanf("%d %c %c",&n,&a,&b)!=EOF)
{
if(l!=0)
{
printf("\n");
}
l=1;
if(n==1)
{
printf("%c\n",a);
continue;
}
flag=1;
if(((n-1)/2)%2==0)//判断从哪个字符开始交替循环
{
temp=b;
b=a;
a=temp;
}
while(flag<=n)
{
for(i=1;i<=n;i++)
{
str[i][flag]=str[i][n-flag+1]=str[flag][i]=str[n-flag+1][i]=(flag%2==1?b:a);
}
flag++;
}
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
if(i==1&&j==1||i==1&&j==n||i==n&&j==1||i==n&&j==n)
{
printf(" ");
continue;
}
printf("%c",str[i][j]);
}
printf("\n");
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: