zoukankan      html  css  js  c++  java
  • 九度OJ--Q1164

    import java.util.Scanner;

    /*
    * 题目描述:
    * 任意输入两个9阶以下矩阵,要求判断第二个是否是第一个的旋转矩阵,如果是,输出旋转角度(0、90、180、270),如果不是,输出-1。
    * 要求先输入矩阵阶数,然后输入两个矩阵,每行两个数之间可以用任意个空格分隔。行之间用回车分隔,两个矩阵间用任意的回车分隔。
    * 输入:
    * 输入有多组数据。
    * 每组数据第一行输入n(1<=n<=9),从第二行开始输入两个n阶矩阵。
    * 输出:
    * 判断第二个是否是第一个的旋转矩阵,如果是,输出旋转角度(0、90、180、270),如果不是,输出-1。
    * 如果旋转角度的结果有多个,则输出最小的那个。
    * 样例输入:
    * 3
    * 1 2 3
    * 4 5 6
    * 7 8 9
    * 7 4 1
    * 8 5 2
    * 9 6 3
    * 样例输出:
    * 90
    */

    public class q1164 {

      public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);

        while(scanner.hasNext()) {

          int n = scanner.nextInt();

          int[][] a = new int[n][n];
          int[][] b = new int[n][n];

          // 给a,b两个矩阵赋值
          for(int i=0; i<n; i++) 
            for(int j=0; j<n; j++) 
              a[i][j] = scanner.nextInt();
          for(int i=0; i<n; i++) 
            for(int j=0; j<n; j++) 
              b[i][j] = scanner.nextInt();

          int flag = -1;

          // 旋转角度为0的情况 
          for(int i=0; i<n; i++) {
            for(int j=0; j<n; j++) {
              if(a[i][j] == b[i][j]) {
                flag = 0;
                continue;
              }
              else {
                flag = -1;
                break;
              }
            }
            if(flag == -1) break;
            else continue;
          }
          if(flag == 0) {
            System.out.println(flag);
            continue;
          }

          // 旋转角度为90的情况
          for(int i=0; i<n; i++) {

            int j = 0;

            while(j<n) {
              if(a[i][j] == b[j][n-1-i]) {
                flag = 90;
                j++;
              }
              else {
                flag = -1;
                break;
              }
            }

            if(flag == -1) break;
            else continue;

          }
          if(flag == 90) {
            System.out.println(flag);
            continue;
          }

          // 旋转角度为180的情况
          for(int i=0; i<n; i++) {

            int j = 0;

            while(j<n) {
              if(a[i][j] == b[n-1-i][n-1-j]) {
                flag = 180;
                j++;
              }
              else {
                flag = -1;
                break;
              }
            }

            if(flag == -1) break;
            else continue;

          }  
          if(flag == 180) {
            System.out.println(flag);
            continue;
          }

          // 旋转角度为270的情况 
          for(int i=0; i<n; i++) {

            int j=0;

            while(j<n) {
              if(a[i][j] == b[n-1-j][i]) {
                flag = 270;
                j++;
              }
              else {
                flag = -1;
                break;
              }
            }

            if(flag == -1) break;
            else continue;
          }
          if(flag == 270) {
            System.out.println(flag);
            continue;
          }

          // flag = -1 的情况
          if(flag == -1) {
            System.out.println(flag);
            continue;
          }
        }

      }

    }

  • 相关阅读:
    date之Hi时间的思考
    空循环比较 for foreach array_map array_walk
    ECSHOP 数据库结构说明 (适用版本v2.7.3)
    自定义写入读出文件作为存储的函数
    session 重写进入redis测试
    单独批次性任务采用MySQL定时器解决需求
    php 接收 Content-Type 是 application/json的请求数据
    centos 6.4 mysql rpm 离线安装【备忘】
    solr单机版安装与基本部署
    vim&vi在编辑的时候突然卡死,不接收输入问题的解决
  • 原文地址:https://www.cnblogs.com/yg6405816/p/5466896.html
Copyright © 2011-2022 走看看