题目描述
给出2个大小相同的矩阵方阵A,B,方阵中的元素为0或1。若A和B相似,满足下面条件:
(1)A=B 相等,则输出0
(2)A经过顺时针旋转90°成为B,则输出1
(3)A经过顺时针旋转180°成为B,则输出2
(4)A经过顺时针旋转270°成为B,则输出3
若A,B不相似,则输出-1;
例如
则输出1,因为A顺时针旋转90°成为B。
输入格式
第一行为一个整数 n(1≤n≤20),
接下来的 n 行表示 A 矩阵的 01 方阵;
再接下来的 n 行表示 B 矩阵的 01 方阵。
输出格式
一个整数(0,或1,或2, 或3,或-1)即A,B 相似的结果。
输入输出样例
样例 #1输入
4
0 0 0 0
0 0 0 0
0 1 0 0
0 0 0 0
0 0 0 0
0 1 0 0
0 0 0 0
0 0 0 0
样例 #1输出
1
代码
#include <bits/stdc++.h>
using namespace std;
bool check(int n[21][21],int m[21][21],int s){
for(int i=0;i<s;i++){
for(int j=0;j<s;j++){
if(n[i][j]!=m[i][j]) return 0;
}
}
return 1;
}
int main(){
int n,a[21][21],b[21][21],c[21][21],d[21][21],e[21][21];
cin>>n;
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
cin>>a[i][j];
}
}
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
cin>>b[i][j];
}
}
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
c[i][j]=a[(n-1)-j][i];
d[i][j]=a[(n-1)-i][(n-1)-j];
e[i][j]=a[j][(n-1)-i];
}
}
// for(int i=0;i<n;i++){
// for(int j=0;j<n;j++){
// cout<<c[i][j]<<" ";
// }
// cout<<endl;
// }
if(check(b,a,n)){
cout<<0;
}
else if(check(b,c,n)){
cout<<1;
}
else if(check(b,d,n)){
cout<<2;
}
else if(check(b,e,n)){
cout<<3;
}
else{
cout<<-1;
}
return 0;
}
留言
如果有题目不会的话,欢迎私信我,我会尽可能解决!!!