【PTA】回文の検証と左右対称正方行列の判定

画像の説明を追加してください
個人名刺:

ブロガーアルコール依存症ᝰ。
個人プロフィール:ワインに酔いしれ、お酒で未来を切り拓く。
PTAの演習と分析
導入:ブロガーの練習問題をPTAに収録

画像の説明を追加してください

序文

1 はじめに

「PTAプログラミング実験補助教育プラットフォーム」は、浙江大学が主導し、杭州百騰教育技術有限公司が管理・運営し、全国の大学の教師が共同で構築したプログラミングコースの補助教育プラットフォームです。現在、全国の 538 の大学が参加し、3,152 人の教師が共同で 66,095 の質の高いトピックを作成し、登録学生数は 136 万人に達し、14 の固定トピック セット (C 言語、JAVA 言語、 Python 言語、データ構造、データベース システム) および中国大学コンピューター コンテストの質問バンク) と 55 の専門コースのトピック セット (コンピューター、エレクトロニクス、文学、外国語、Huawei 認定をカバー)。問題は正誤問題、穴埋め問題、多肢選択問題、多肢選択問題、プログラム穴埋め問題、関数問題、プログラミング問題、主観問題、マルチファイル プログラミングに関する質問と SQL プログラミングに関する質問。

2.利点

  • 同時に 200,000 人をオンラインでサポート
  • 複数の質問タイプをサポート
  • 多彩な判定モードに対応
  • 教育の質を包括的に保証する
  • 即時質問応答システム

1.回文を検証する

1.トピックス

文字列が回文かどうかを検証するプログラムを作成します。前に読むことと後ろに読むことは同じです。たとえば、お母さん、お父さんは回文文字列です。プログラムは、ユーザーが入力した文字列を受け取り、回文かどうかを判定し、判定結果を出力します。

入力形式:
入力は 1 行で文字列を与えます。

出力形式:
入力文字列が回文の場合は yes を出力し、そうでない場合は no を出力します。

サンプル入力:
これは一連の入力です。例えば:

議事録

出力例:
対応する出力をここに示します。例えば:

はい

コード長制限 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次の正方行列について、その正方行列が左右対称かどうか、つまり上下左右対称かどうかを判断してください。そうであれば「はい」を出力し、そうでなければ「いいえ」を出力します。たとえば、この例では、左右の対称性は 2 番目の列によって制限され、上下の対称性は 2 番目の行によって制限されているため、"yes" が出力されます。

入力形式:
最初にテスト データ グループの数を表す正の整数 T を入力し、次に T グループのテスト データを入力します。各データ セットの最初の行は、正方行列の次数 n (2≤n≤50) で入力され、次の入力は n 行で、各行には正方行列の要素を表す n 個の整数が含まれます。

出力形式:
テストデータのセットごとに、正方行列が二重対称であれば「はい」を出力し、そうでなければ「いいえ」を出力します。引用符を出力する必要はないことに注意してください。

入力サンプル:

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

出力例:

いいえ
はい

コード長制限 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");
                }
            }
        }
    }
}

おすすめ

転載: blog.csdn.net/m0_65144570/article/details/127115289