题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2074
说明: 这个就是字符串的处理,模拟题,好玩的一批,只要控制空格回车不同字符就可以了,循环printf(), 这种题目没有算法,就是仔细不仔细了,首先确定不同的情况,单独处理,相同的情况循环处理。
#include<stdio.h> char map[100][100];
int main()
{ int n,i,j,mark; char a,b,t,flag=0; while(~scanf("%d %c %c",&n,&a,&b)) { if(flag) putchar('\n'); flag=1; if((n-1)%4)//判断哪个在最外面,这个是找规律 { t=a; a=b; b=t; } t=a,mark=1;//t和mark的初始化 for(i=0;i<=n/2;i++) { t=a; mark=1; for(j=0;j<n;j++) { if(n!=1&&i==0&&(j==0||j==n-1))//注意n==1的时候 { putchar(' '); map[i][j]=' '; continue; } map[i][j]=t; putchar(t); if(i>j||j>=(n-1)-i)//这也是找规律,什么时候要变 { if(mark)//轮流变化 { t=b; mark=0; } else { t=a; mark=1; } } } putchar('\n'); } for(i=n/2-1;i>=0;i--) { for(j=0;j<n;j++) { printf("%c",map[i][j]); } putchar('\n'); } } return 0;
}