#include <cmath> #include <iostream> #include <vector> #include "vector" using namespace std; void rotate(vector<vector<int>>&matrix){//顺时针旋转矩阵 int n=matrix.size(); for(int i=0;i<n/2;i++){//水平翻转 for(int j=0;j<n;j++){ swap(matrix[i][j],matrix[n-1-i][j]); } } for(int i=0;i<n;i++){//主对角线翻转 for(int j=0;j<i;j++){ swap(matrix[i][j],matrix[j][i]); } } } bool equal(vector<vector<int>>m1,vector<vector<int>>m2){//判断矩阵是否相等 int n=m1.size(); for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ if(m1[i][j]!=m2[i][j]) return false; } } return true; } int judge(vector<vector<int>>&m1,vector<vector<int>>&m2){ if(equal(m1,m2))//如果m1和m2本身就相等,即不用旋转 return 0; for(int i=1;i<=3;i++){ rotate(m1);//旋转一次 if(equal(m1,m2)){//如果矩阵相等 return i*90; //返回旋转次数×90 } } return -1;//如果旋转三次都没能相等,说明第二个不是第一个的旋转矩阵 } int main() { int n; cin>>n; vector<vector<int>>matrix1(n,vector<int>(n,0)); vector<vector<int>>matrix2(n,vector<int>(n,0)); for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ cin>>matrix1[i][j]; } } for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ cin>>matrix2[i][j]; } } cout<<judge(matrix1, matrix2); }