#include <iostream>
#include <vector>

using namespace std;

int main() {

  int n; // n为矩阵阶数

  while(cin>>n) {

    int x, y, i, j; // 用于循环控制

    vector< vector<int> > vec1(n, vector<int>(n));
    vector< vector<int> > vec2(n, vector<int>(n));

    // 向动态数组中存入数据
    for(x=0; x<n; x++) {
      for(y=0; y<n; y++) {
        int mid; // 中间变量,用于向vec1中存入数据
        cin>>mid;
        vec1[x][y] = mid;
      }
    }
    for(x=0; x<n; x++) {
      for(y=0; y<n; y++) {
        int mid; // 中间变量,用于向vec2中存入数据
        cin>>mid;
        vec2[x][y] = mid;
      }
    }

    int flag = 0; // 用于判定全部元素是否符合旋转角度,是flag=1,否flag=0
    int angle = -1; // 记录旋转角度

    // 判断旋转角度是否为0
    for(i=0; i<n; i++) {

      for(j=0; j<n; j++) {

        if(vec1[i][j] == vec2[i][j]) {
          flag = 1;
          continue;
        }
        else {
          flag = 0;
          break;
        }
      }

      if(flag == 1) {
        continue;
      }
      else {
        break;
      }
    }
    if(flag == 1) {
      angle = 0;
      cout<<angle<<endl;
      continue;
    }
    else {
      angle = -1;
    }

    // 判断旋转角度是否为90
    for(i=0; i<n; i++) {

      for(j=0; j<n; j++) {

        if(vec1[i][j] == vec2[j][n-1-i]) {
          flag = 1;
          continue;
        }
        else {
          flag = 0;
          break;
        }
      }

      if(flag == 1) {
        continue;
      }
      else {
        break;
      }
    }
    if(flag == 1) {
      angle = 90;
      cout<<angle<<endl;
      continue;
    }
    else {
      angle = -1;
    }

    // 判断旋转角度是否为180
    for(i=0; i<n; i++) {

      for(j=0; j<n; j++) {

        if(vec1[i][j] == vec2[n-1-i][n-1-j]) {
          flag = 1;
          continue;
        }
        else {
          flag = 0;
          break;
        }
      }

      if(flag == 1) {
        continue;
      }
      else {
        break;
      }
    }
    if(flag == 1) {
      angle = 180;
      cout<<angle<<endl;
      continue;
    }
    else {
      angle = -1;
    }

    // 判断旋转角度是否为279
    for(i=0; i<n; i++) {

      for(j=0; j<n; j++) {

        if(vec1[i][j] == vec2[n-1-j][i]) {
          flag = 1;
          continue;
        }
        else {
          flag = 0;
          break;
        }
      }

      if(flag == 1) {
        continue;
      }
      else {
        break;
      }
    }
    if(flag == 1) {
      angle = 270;
      cout<<angle<<endl;
      continue;
    }
    else {
      angle = -1;
    }

    // 若以上角度都不符合
    if(angle == -1) {
      cout<<angle<<endl;
      continue;
    }

  }

  return 0;

}

九度OJ--1164(C++)的更多相关文章

  1. 九度OJ 1164:旋转矩阵 (矩阵运算)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:3188 解决:1245 题目描述: 任意输入两个9阶以下矩阵,要求判断第二个是否是第一个的旋转矩阵,如果是,输出旋转角度(0.90.180. ...

  2. 九度oj 题目1087:约数的个数

    题目链接:http://ac.jobdu.com/problem.php?pid=1087 题目描述: 输入n个整数,依次输出每个数的约数的个数 输入: 输入的第一行为N,即数组的个数(N<=1 ...

  3. 九度OJ 1502 最大值最小化(JAVA)

    题目1502:最大值最小化(二分答案) 九度OJ Java import java.util.Scanner; public class Main { public static int max(in ...

  4. 九度OJ,题目1089:数字反转

    题目描述: 12翻一下是21,34翻一下是43,12+34是46,46翻一下是64,现在又任意两个正整数,问他们两个数反转的和是否等于两个数的和的反转. 输入: 第一行一个正整数表示测试数据的个数n. ...

  5. 九度OJ 1500 出操队形 -- 动态规划(最长上升子序列)

    题目地址:http://ac.jobdu.com/problem.php?pid=1500 题目描述: 在读高中的时候,每天早上学校都要组织全校的师生进行跑步来锻炼身体,每当出操令吹响时,大家就开始往 ...

  6. 九度OJ 1531 货币面值(网易游戏2013年校园招聘笔试题) -- 动态规划

    题目地址:http://ac.jobdu.com/problem.php?pid=1531 题目描述: 小虎是游戏中的一个国王,在他管理的国家中发行了很多不同面额的纸币,用这些纸币进行任意的组合可以在 ...

  7. 九度OJ 1024 畅通工程 -- 并查集、贪心算法(最小生成树)

    题目地址:http://ac.jobdu.com/problem.php?pid=1024 题目描述:     省政府"畅通工程"的目标是使全省任何两个村庄间都可以实现公路交通(但 ...

  8. 九度OJ 1371 最小的K个数 -- 堆排序

    题目地址:http://ac.jobdu.com/problem.php?pid=1371 题目描述: 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4 ...

  9. 九度OJ 题目1384:二维数组中的查找

    /********************************* * 日期:2013-10-11 * 作者:SJF0115 * 题号: 九度OJ 题目1384:二维数组中的查找 * 来源:http ...

  10. hdu 1284 关于钱币兑换的一系列问题 九度oj 题目1408:吃豆机器人

    钱币兑换问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Sub ...

随机推荐

  1. HDU 1312 Red and Black(最简单也是最经典的搜索)

    传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1312 Red and Black Time Limit: 2000/1000 MS (Java/Oth ...

  2. select 文字右对齐

    select { direction: rtl; } select option { direction: ltr; }

  3. oracle 的分页查询与mysql 的分页查询

    oracle 的分页查询: select * from (select o.*,rownum rn  from Persons o) where rn >40 and rn <=60 : ...

  4. jquery mobile 移动web(1)

    轻量级框架jQuery Mobile 所需文件 <link rel="stylesheet" href="jquery.mobile-1.1.2/jquery.mo ...

  5. fjutacm 3700 这是一道数论题 : dijkstra O(mlogn) 二进制分类 O(k) 总复杂度 O(k * m * logn)

    /** problem: http://www.fjutacm.com/Problem.jsp?pid=3700 按二进制将k个待查点分类分别跑dijkstra **/ #include<std ...

  6. 微信小程序bindtap与catchtap的区别

    1.什么是事件 (1) 事件是视图层到逻辑层的通讯方式. (2) 事件可以将用户的行为反馈到逻辑层进行处理. (3) 事件可以绑定在组件上,当达到触发事件,就会执行逻辑层中对应的事件处理函数. (4) ...

  7. koa2 mongdb 做后端接口的小demo

    现在前端全栈里面有一种技术栈比较火 前端使用 vue 或者react 后端使用 koa2 mysql数据库 或者mongdb做数据储存 但是基本这样的全栈教程 都要收费 收费就收费吧 但是 有没有遇到 ...

  8. C#中在WebClient中使用post发送数据实现方法

    很多时候,我们需要使用C#中的WebClient 来收发数据,WebClient 类提供向 URI 标识的任何本地.Intranet 或 Internet 资源发送数据以及从这些资源接收数据的公共方法 ...

  9. Redis的自从复制(Master/Slave)

    一.是什么? 行话:也就是我们所说的主从复制,主机数据更新后根据配置和策略,自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主 二.能干嘛? 1.读写分离 2.容 ...

  10. go执行外部应用

    go执行外部应用 最近想将原来用asp.net mvc写的一个公司内部网站改用beego来写,但发现其中有一个功能是,能将加密的sqlite文件进行解密,因为这个解密是不能公开的,但有些同事需要查看这 ...