ps:WA了好多次...因为首先是n=1的情况,其次是中心花色和外花色,中心花色也有可能是最外层花色。。。。很无语。
然后就是格式问题咯。
代码
#include "stdio.h" #include "string.h" void GG(int n,char a,char b); void pri(char a); int main(){ int i,j,n,ncase=0; char a,b; while(~scanf("%d %c %c",&n,&a,&b)){ if(ncase++) printf("\n"); if(n==1){ printf("%c\n",a); continue; } if((n/2+1)%2==0){ GG(n,a,b); } else{ GG(n,b,a); } } return 0; } void GG(int n,char a,char b){ int i,j; for(i=1;i<=n/2+1;i++){ if(i==1){ printf(" "); for(j=1;j<=n-2;j++) pri(b); printf(" \n"); } else{ for(j=1;j<=n;j++){ if(j>=i && n-j+1>=i){ if(i%2==0) pri(a); else pri(b); } else{ if(j%2==0){ if(j==n){ pri(a); printf("\n"); continue; } pri(a); } else{ if(j==n){ pri(b); printf("\n"); continue; } pri(b); } } } } } for(i=n-(n/2+1)+2;i<=n;i++){ if(i==n){ printf(" "); for(j=1;j<=n-2;j++) pri(b); printf(" \n"); } else{ for(j=1;j<=n;j++){ if(j<=i && n-i+1<=j){ if(i%2==0) pri(a); else pri(b); } else{ if(j%2==0){ if(j==n){ pri(a); printf("\n"); continue; } pri(a); } else{ if(j==n){ pri(b); printf("\n"); continue; } pri(b); } } } } } } void pri(char a){ printf("%c",a); }
时间: 2024-10-15 00:21:01