http://acm.hdu.edu.cn/showproblem.php?pid=2074水题一个,要注意的地方很多:
1、从里往外的,要注意最外层的字符与n(n/2的奇偶性)有关;
2、四个角都有空格,主要是后面两个容易忽视;
3、Presentation Error:空行;
模拟找出两个字符在行方向上的奇偶性关系,mod 2即可方便处理:
#include<stdio.h>
int main()
{
int n,i,j,count,flag;
char ch[3];
flag=-1;
while (scanf("%d %c %c",&n,&ch[0],&ch[1])==3)
{
n=n/2;
if (flag!=-1)
printf("\n");
flag=0;
if (n==0)
{
printf("%c\n",ch[0]);continue;
}
if (n%2==1)
{
ch[2]=ch[0];
ch[0]=ch[1];
ch[1]=ch[2];
}
printf(" ");
for (i=1;i<2*n;i++)
printf("%c",ch[0]);
printf(" \n");
for (i=0;i<2*n-1;i++)
{
if (i<n)
count=i+1;
else
count=2*n-i-1;
;
for (j=0;j<=2*n;j++)
{
if (j<count)
printf("%c",ch[j%2]);
else
if (2*n-j<count)
printf("%c",ch[j%2]);
else
printf("%c",ch[count%2]);
}
printf("\n");
}
printf(" ");
for (i=1;i<2*n;i++)
printf("%c",ch[0]);
printf(" \n");
}
}
还有找出行列函数关系的打表处理
ps:字符读入,纠结死了,这个题提交了14次!!!!!!!!