【PTA】验证回文串和判断双对称方阵

请添加图片描述
个人名片:

博主酒徒ᝰ.
个人简介沉醉在酒中,借着一股酒劲,去拼搏一个未来。
专栏PTA习题及解析
介绍记录了博主在pta学习练题

请添加图片描述

前言

1.简介

“PTA程序设计类实验辅助教学平台”是由浙江大学主导,杭州百腾教育科技有限公司管理运营,全国高校教师共同建设的程序设计类课程的辅助教学平台。目前,全国538所高校参与,3152位教师共同建设出66095道高质量题目,学生注册用户已达136万;共有14类固定题目集(涵盖C语言、JAVA语言、Python语言、数据结构、数据库系统和中国高校计算机大赛题库等方面)和55类专业课程题目集(涵盖计算机类、电子类、文学类、外语类及华为认证)。包含判断题、填空题、单选题、多选题、程序填空题、函数题、编程题、主观题、多文件编程题和SQL编程题10种题目类型。

2.优点

  • 支持20万人同时在线
  • 支持多种题型
  • 支持多种判题模式
  • 为教学质量提供全方位保障
  • 即时的答疑系统

一、验证回文串

1. 题目

编写程序,验证一个字符串是否为回文串:是否从前读它和从后读它都是一样的。例如,mom,dad是回文串。该程序接收用户输入的字符串,判断是否为回文串,然后将判断的结果输出。

输入格式:
输入在一行中给出一个字符串。

输出格式:
如果输入的字符串为回文串,则输出yes;否则输出no。

输入样例:
在这里给出一组输入。例如:

mom

输出样例:
在这里给出相应的输出。例如:

yes

代码长度限制 16 KB
时间限制 400 ms
内存限制 64 MB

2. 代码

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str = sc.next();
        String sum = String.valueOf(str.charAt(0));
        for (int i = 1; i < str.length(); i++) {
            sum = sum + str.charAt(i);
        }
        if (str.equals(sum)){
            System.out.println("yes");
        }else {
            System.out.println("no");
        }
    }
}

二、判断双对称方阵

1. 题目

对于一个n阶方阵,请判断该方阵是否双对称,即既左右对称又上下对称。若是则输出“yes”,否则输出“no”。例如,样例中,以第2列为界则左右对称,以第2行为界则上下对称,因此输出“yes”。

输入格式:
首先输入一个正整数T,表示测试数据的组数,然后是T组测试数据。每组数据的第一行输入方阵的阶n(2≤n≤50),接下来输入n行,每行n个整数,表示方阵中的元素。

输出格式:
对于每组测试数据,若该方阵双对称,则输出“yes”,否则输出“no”。注意,引号不必输出。

输入样例:

2
3
1 2 1
3 5 3
1 4 1
3
1 2 1
3 5 3
1 2 1

输出样例:

no
yes

代码长度限制 16 KB
时间限制 400 ms
内存限制 64 MB

2. 代码

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int T = sc.nextInt();
        for (int k = 0; k < T; k++) {
            int n = sc.nextInt();
            if (n >= 2 && n <= 50){
                int[][] num = new int[n][n];
                for (int i = 0; i < n; i++) {
                    for (int j = 0; j < n; j++) {
                        num[i][j] = sc.nextInt();
                    }
                }
                boolean flag = true;
                //竖
                for (int i = 0; i < n; i++) {
                    for (int j = 0; j < n/2; j++) {
                        if (!(num[i][j] == num[i][n-j-1])){
                            flag = false;
                        }
                    }
                }
                //横
                for (int i = 0; i < n; i++) {
                    for (int j = 0; j < n/2; j++) {
                        if (!(num[j][i] == num[n-j-1][i])){
                            flag = false;
                        }
                    }
                }
                if (flag){
                    System.out.println("yes");
                }else {
                    System.out.println("no");
                }
            }
        }
    }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值