CSDN 四川大学线下编程比赛第二题:Peter的X

CSDN 四川大学线下编程比赛第二题:Peter的X

大家好,又见面了,我是全栈君。

题目详情:

http://student.csdn.net/mcs/programming_challenges

Peter是个小男孩。他总是背不清26个英文字母。

于是,刁钻的英语老师给他布置了一个很奇怪的作业。老师给了他一个由26个英文字母构成的N*N 的矩阵(我们保证N一定是一个奇数),问他这个矩阵构成的图案是否是一个标准的“X”。

一个标准的X的定义:1、对角线上全部元素都是同一个字母。2、全部非对角线上的元素也都是同一个字母。且字母与对角线上的字母不同。

假设是则输出“YES”。否则输出“NO”。

输入描写叙述:

多组測试数据(数据量在100组以内)。每组測试数据第一行为一个整数N(1<=N<=300),表示表格的大小。

以下是N行是一个由字母构成的N*N的矩阵。

输出描写叙述:

对于每组输入数据,输出一行“YES”或“NO”。


输入例子:

5

xooox

oxoxo

soxoo

oxoxo

xooox

3

wsw

sws

wsw

3

xpx

pxp

xpe

输出例子:

NO

YES

NO

题目分析:

简单的模拟推断题,首先推断主对角线。然后推断副对角线,之后推断其它位置,最后推断对角线的元素是否和其它位置的元素一样。

AC代码:

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
char a[303][303];
int JudgeX(int n){
    if(n==1) return 1;
    char c1=a[1][1],c2;
    for(int i=1;i<=n;i++){//推断主对角线
        if(a[i][i]!=c1) return 0;//不是
    }
    for(int i=1;i<=n;i++){//推断副角线
        if(a[i][n+1-i]!=c1) return 0;//不是
    }
    c2=a[1][2];
    for(int i=1;i<=n;i++){//其它
        for(int j=1;j<=n;j++){
            if(i!=j&&(i+j)!=(n+1)){
                if(a[i][j]!=c2) return 0;
            }
        }
    }
    if(c1==c2) return 0;//别忘了不能相等了
    return 1;
}
int main()
{
    int n;
    while(cin>>n){
        for(int i=1;i<=n;i++){
            for(int j=1;j<=n;j++){
                cin>>a[i][j];
            }
        }
        if(JudgeX(n)) cout<<"YES"<<endl;
        else cout<<"NO"<<endl;
    }
    return 0;
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/116492.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • css 更改鼠标为手状样式

    css 更改鼠标为手状样式在自行设置的 div 或者其他标签中 为了更好的体验效果 会将在滑动过程中 将鼠标变为手势简单总结下 css 对应的样式 所在的 div 中 添加 cursor pointer 即可 示例

    2025年10月13日
    4
  • 0xc0000225无法进系统_电脑无法启动,出现0xc0000225一到错误,该怎样解决!

    0xc0000225无法进系统_电脑无法启动,出现0xc0000225一到错误,该怎样解决!展开全部根据系统提示是引导选择失败,因为需要的设备不可访问。由此可知,可e69da5e887aa3231313335323631343130323136353331333363386666能是硬盘或者引导有故障。可依照以下步骤进行一一排查并修复。第一步,制作一个U盘启动盘,1、事先准备4G以上U盘一个,网上下载pe软件(譬如大白菜、u当家、老毛桃等等)程序。2、首先要把U盘制成pe启动盘,百度搜索…

    2022年6月26日
    64
  • mybatis批量插入并返回主键(xml和注解两种方式)

    mybatis批量插入在mysql数据库中支持批量插入,所以只要配置useGeneratedKeys和keyProperty就可以批量插入并返回主键了。比如有个表camera,里面有cameraNo,chanIndex,cameraName这三个字段,其中cameraNo是自增主键。下面是批量插入的Dao层接口:voidbatchInsertCameras(@Param(“li…

    2022年4月9日
    47
  • CBOW 更新[通俗易懂]

    CBOW 更新[通俗易懂]代码:importtorchimporttorch.nnasnnimportnumpyasnpdefmake_context_vector(context,word_to_ix):idxs=[word_to_ix[w]forwincontext]returntorch.tensor(idxs,dtype=torch.long)…

    2025年8月31日
    4
  • Apache .htaccess规则RewriteCond 和RewriteRule-实操解释说明

    Apache .htaccess规则RewriteCond 和RewriteRule-实操解释说明如果你在看的时候有些迷惑,或许你需要配合下面这篇文章一起看《Apache.htaccess规则说明》https://blog.csdn.net/cplvfx/article/details/94725685该文章转自https://justcoding.iteye.com/blog/547384RewriteCond重写规则的条件RewriteCondSyntax:…

    2022年5月18日
    36
  • CentOs6.5升级内核到3.0+[通俗易懂]

    CentOs6.5升级内核到3.0+[通俗易懂]1、查看内核版本 命令: uname -a 2、导入key 命令: rpm –import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org 如果报SSL错误, 则需要更新网络安全服务 yum update nss3、安装elrepo的yum源命令:rpm -U…

    2022年6月13日
    29

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号