题目链接:http://codeforces.com/contest/404/problem/A
#include <stdio.h> #include <string.h> #include <string.h> int n; char maps[305][305]; bool vis[305][305]; int main() { scanf("%d",&n); memset(vis,false,sizeof(vis)); for(int i=1;i<=n;i++) scanf("%s",maps[i]+1); char a,b; bool flag1=true,flag2=true,flag3=true; a=maps[1][1]; b=maps[1][2]; if(a==b) flag3=false; for(int i=1;i<=n;i++) { if(maps[i][i]!=a) { flag1=false; break; } if(maps[n-i+1][i]!=a) { flag1=false; break; } } for(int i=1;i<=n;i++) vis[i][i]=true; for(int i=1;i<=n;i++) vis[n-i+1][i]=true; for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { if(!vis[i][j]) { if(maps[i][j]!=b) { flag2=false; break; } } } if(!flag2) break; } if(!flag3) printf("NO "); else if(flag1&&flag2) printf("YES "); else printf("NO "); return 0; }