任意输入两个 9 阶以下矩阵,要求判断第二个是否是第一个的旋转矩阵(顺时针),如果是,输出旋转角度(0、90、180、270),如果不是,输出 −1。
输入格式
第一行包含整数 n,表示矩阵阶数。
接下来 n行,每行包含 n 个空格隔开的整数,表示第一个矩阵。
再接下来 n 行,每行包含 n 个空格隔开的整数,表示第二个矩阵。
输出格式
判断第二个矩阵是否是第一个的旋转矩阵,如果是,输出旋转角度(0、90、180、270),如果不是,输出 −1。
如果旋转角度的结果有多个,则输出最小的那个。
数据范围
1≤n≤9
矩阵中元素取值范围 [1,9][1,9]
输入样例:
解释
3
1 2 3
4 5 6
7 8 9
7 4 1
8 5 2
9 6 3
输出样例:
90
#include<bits/stdc++.h>
using namespace std;int n;
const int M = 10;
int a1[M][M],a2[M][M];void input(){for(int i = 1; i <=n; i++){for(int j = 1; j <=n; j++){cin>>a1[i][j];}}for(int i = 1; i <=n; i++){for(int j = 1; j <=n; j++){cin>>a2[i][j];}}
}int cheak(){//0度int b=1;for(int i =1;i<=n;i++){for(int j =1; j<=n;j++){if(a1[i][j]==a2[i][j]){}else{b=0;break;}}}if(b)return 0;b=1;//90度for(int i =1; i<=n; i++){for(int j =1; j<=n;j++){if(a1[i][j]==a2[j][n-i+1]){}else{b=0;break;}}}if(b)return 90;b=1;for(int i =1; i<=n; i++){for(int j =1; j<=n;j++){if(a1[i][j]==a2[n-i+1][n-j+1]){}else{b=0;break;}}}if(b)return 180;b=1;for(int i =1; i<=n; i++){for(int j =1; j<=n;j++){if(a1[i][j]==a2[n-j+1][i]){}else{b=0;break;}}}if(b)return 270;return -1;
}int main()
{cin>>n;input();cout<<cheak()<<"\n";return 0;
}