旋转矩阵
要点矩阵旋转的实现 计算分析
利用循环每次将A旋转90度 判断AB是否相同 如果旋转4次还没相同则说明B不能由A旋转得到
**旋转是难点 需要画表格分析 **
#include <bits/stdc++.h>
using namespace std;
int n;
int t[10][10],a[10][10],b[10][10];
bool equal(int a[10][10],int b[10][10]){
for(int i=1;i<=n;++i){
for(int j=1;j<=n;++j){
if(a[i][j]!=b[i][j])
return false;
}
}
return true;
}
void print(int b[10][10]){
for(int i=1;i<=n;++i){
for(int j=1;j<=n;++j){
cout<<b[i][j]<<' ';
}
puts("");
}
}
int main(){
scanf("%d",&n);
for(int i=1;i<=n;++i){
for(int j=1;j<=n;++j){
cin>>a[i][j];
}
}for(int i=1;i<=n;++i){
for(int j=1;j<=n;++j){
cin>>b[i][j];
}
}
//输入AB两个矩阵
int d[4]={0,90,180,270};
for(int i=0;i<4;++i){
if (equal(a,b)){
printf("%d\n",d[i]);
return 0;
}
//旋转a
for(int j=1;j<=n;++j){
for(int k=n;k>=1;--k){
t[j][n+1-k]=a[k ][j];//旋转是难点需要 写数据
}
}
for(int j=1;j<=n;++j){
for(int k=1;k<=n;++k){
a[j][k]=t[j][k];
}
}
print(a);
}
printf("-1\n");
}