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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • linux命令export什么意思_shell脚本执行oracle语句

    linux命令export什么意思_shell脚本执行oracle语句Linuxexport命令用法Linuxexport命令用于设置或显示环境变量。在shell中执行程序时,shell会提供一组环境变量。export可新增,修改或删除环境变量,供后续执行的程序使用。export的效力仅限于该次登陆操作。export[-fnp][变量名称]=[变量设置值]参数说明:-f 代表[变量名称]中为函数名称。-n 删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中。-p 列出所有的shell赋予程序的环境变量。示例

    2025年9月30日
    4
  • 理清那么多个OO(面向对象)

    OOA-Object-OrientedAnalysis(面向对象分析)OOT-Object-OrientedTesting(面向对象测试)OOP-Object-Oriented

    2021年12月24日
    48
  • 。。。

    。。。

    2021年9月12日
    43
  • vue如何引用js文件_html转化为vue组件

    vue如何引用js文件_html转化为vue组件VUE项目中引入JS文件的几种方法在开发Vue项目的时候,有时需要使用一些非ES6格式的没有export的js库,可以有如下方法实现:1.在index.html页面使用script标签引入当然也可以使用cdn的地址。这样引入后的内容是全局的,可以在所有地方使用。Map2.在main.js中使用window.moduleName使用也可以放入Vue.prototype中,这样组件内都可以使用。va…

    2022年10月8日
    1
  • sql-update 用法

    sql-update 用法update表示更新,要想更新数据库的某条数据,我们通常用:update{表名}set{列名}={新的值}where{条件}以LeetCode上看到的一个简单的题目为例:问题1:将A的薪水修改为8000;答案:updateSalarysetsalarywherename=A;问题2:交换所有的’f’和’m’(即,将所有’f’变为’m’,反之亦然),仅使用单个update语句,…

    2025年6月16日
    4
  • PLSQL_查询SQL的执行次数和频率(案例)

    PLSQL_查询SQL的执行次数和频率(案例)

    2021年9月3日
    68

发表回复

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

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