バレラとX CodeForces - 404A

トピックリンク

バレラは小さな男の子です。バレラが適切に彼の英語の授業のための英語のアルファベットを学ぶのに十分な時間を持っていなかったので、昨日、彼は、学校で巨大な数学hometaskを得ました。残念ながら、英語の先生は、アルファベット、今日のテストをすることにしました。テストではバレラは、乗紙の正方形の一片を得ました。辺の長さは、n乗に等しい(nは奇数)と、各単位正方形は、英語のアルファベットのいくつかの小さな文字を含んでいます。

バレラは、文字は、紙のフォームレター「X」の正方形の部分に書かれたかどうかを知る必要があります。バレラの教師があれば、紙の上の文字は、「X」を形成することを考えています:

正方形の紙の両方の対角線上のすべての文字が同じです。
紙の他のすべての正方形(彼らは対角線上にない)対角線上の文字が異なる同じ文字が含まれています。
ヘルプバレラは、彼のために説明したタスクを完了するプログラムを書きます。

入力
最初の行は、整数N(; nは奇数である3≤N <300)を含みます。次のn行はそれぞれ、n個の小さな英語の文字が含まれている-バレラの論文の記述を。

出力
を印刷文字列「YES」、紙のフォームレター「X」の文字の場合。それ以外の場合は、文字列「NO」を印刷します。引用符なしの文字列を出力します。


入力
5
xooox
oxoxo
soxoo
oxoxo
xooox
出力
NO
入力
3
WSW
SWS
WSW
出力
YESの
入力
3
xpx
PXP
XPE
出力
NO

タイトル効果:以下の条件かどうかを決定する:
対角線1上の同じ要素
2.残りの要素、及び対角線上のものとは異なります。

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
int main()
{
    int n;
    char c[305][305];
    while(cin>>n&&n!=EOF)
    {
        int flag=0;
        char s1,s2;
        for(int i=0;i<n;i++)
        {
            for(int j=0;j<n;j++)
            {
                cin>>c[i][j];
                if(i==0&&j==0)
                    s1=c[i][j];
                else if(i==0&&j==1)
                    s2=c[i][j];
                if((i==j||i==n-1-j)&&c[i][j]!=s1)
                    flag=1;
                else if(!(i==j||i==n-1-j)&&c[i][j]!=s2)
                    flag=1;
            }
        }
        if(s1==s2)
            flag=1;
        if(flag==0)
            cout<<"YES"<<endl;
        else
            cout<<"NO"<<endl;
    }
    return 0;
}

公開された81元の記事 ウォンの賞賛3 ビュー2749

おすすめ

転載: blog.csdn.net/weixin_44641254/article/details/104739858