这道题,属于模拟题。按照题目做。但是一定要注意,两条对角线上的字母不能和其他位置的字符相同。
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
#define SIZE 305
char letter[SIZE][SIZE];
char diag,other;
int nasce,ans;
int main()
{
while(scanf("%d",&nasce) != EOF)
{
ans = 1;
getchar();
for(int i = 1; i <= nasce; i++)
{
for(int j = 1; j <= nasce; j++)
{
scanf("%c",&letter[i][j]);
if((i == 1) && (j == 1))
diag = letter[i][j];
else
if((i == j) || (j == (nasce - i + 1)))
{
if(letter[i][j] != diag)
ans = 0;
}
else
if((i == 1) && (j == 2))
other = letter[i][j];
else
if(letter[i][j] != other)
ans = 0;
}
getchar();
}
if(ans && (diag != other))
printf("YES\n");
else
printf("NO\n");
}
return 0;
}