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;
          }
        }

      }

    }

  • 相关阅读:
    java常见异常
    实现两个整数变量交换
    java抽象类与接口
    Java内部类用法
    单例模式
    easyUI下拉列表点击事件的使用
    Java中使用HttpRequest获取用户真实IP地址端口
    js-easyUI格式化时间
    1124
    ACM算法
  • 原文地址:https://www.cnblogs.com/yg6405816/p/5466896.html
Copyright © 2011-2022 走看看