11 B A 5 @ W
AAAAAAAAA ABBBBBBBBBA ABAAAAAAABA ABABBBBBABA ABABAAABABA ABABABABABA ABABAAABABA ABABBBBBABA ABAAAAAAABA ABBBBBBBBBA AAAAAAAAA @@@ @WWW@ @W@W@ @WWW@ @@@ 题目分析: 主要注意各种陷阱, 1、注意格式四个小角 2、必须从中间开始模拟 3、最无奈的格式,n=1的时候,和最后一个输出后没有空格。 注意这些就可以AC了。 AC代码:/** *@xiaoran *模拟,必须从中心开始 */ #include<iostream> #include<cstdio> #include<map> #include<cstring> #include<string> #include<algorithm> #include<queue> #include<vector> #include<stack> #include<cstdlib> #include<cctype> #include<cmath> #define LL long long using namespace std; char s[105][105]; int main() { int i,j,n,ok,flag=0; char a,b; while(cin>>n>>a>>b){ if(flag)cout<<endl;//注意格式 if(n==1){ cout<<a<<endl; flag=1; continue; } i=n/2; ok=0; while(i!=-1){ if(ok==0){//中心花色 for(j=i;j<n-i;j++) s[i][j]=a;//第一行 for(j=i;j<n-i;j++) s[n-i-1][j]=a;//最后一行 for(j=i;j<n-i;j++) s[j][i]=a;//第一列 for(j=i;j<n-i;j++) s[j][n-i-1]=a;//最后一列 ok=1; }else{ for(j=i;j<n-i;j++) s[i][j]=b;//第一行 for(j=i;j<n-i;j++) s[n-i-1][j]=b;//最后一行 for(j=i;j<n-i;j++) s[j][i]=b;//第一列 for(j=i;j<n-i;j++) s[j][n-i-1]=b;//最后一列 ok=0; } --i; } for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ if((i==0&&j==0)||(i==n-1&&j==0)||(j==n-1&&i==0)||(j==n-1&&i==n-1)) cout<<" "; else cout<<s[i][j]; } cout<<endl; } flag=1; } return 0; }
原文地址:http://blog.csdn.net/fool_ran/article/details/42563267