题解 | #旋转矩阵#
旋转矩阵
https://www.nowcoder.com/practice/bd62095a03a545729cdbfc506e0da952
#include <bits/stdc++.h>
#define MAX 10
using namespace std;
//上下翻转
void Topfilp(int (&data)[MAX][MAX],int size){
for(int i = 0; i < size / 2; i++){ //翻转次数控制
for(int j = 1; j <= size; j++){ //行数控制
swap(data[1+i][j],data[size-i][j]);
}
}
}
//左右翻转
void Leftfilp(int (&data)[MAX][MAX],int size){
for(int i = 0; i < size /2 ; i++){
for(int j = 1; j <= size; j++){
swap(data[j][1+i],data[j][size-i]);
}
}
}
//对称翻转
void DuiCheng(int (&data)[MAX][MAX],int size){
for(int i = 1; i <= size; i++){
for(int j = 1; j < i; j++){
swap(data[i][j],data[j][i]);
}
}
}
bool Check(int data[MAX][MAX],int a[MAX][MAX],int size){
for(int i = 1; i <= size; i++){
for(int j = 1; j <= size; j++){
if(data[i][j] != a[i][j])
return false;
}
}
return true;
}
int main(){
int n,tmp;
cin>>n;
int data[MAX][MAX],a[MAX][MAX];
for(int i = 1; i <= n; i++){
for(int j = 1; j <= n; j++){
cin>>data[i][j];
}
}
for(int i = 1; i <= n; i++){
for(int j = 1; j <= n; j++){
cin>>a[i][j];
}
}
if(Check(data,a,n)){
cout<<"0";
return 0;
}
Topfilp(data,n);
DuiCheng(data,n);
if(Check(data,a,n)){
cout<<"90"; //顺时针90
return 0;
}
Topfilp(data,n);
DuiCheng(data,n);
if(Check(data,a,n)){
cout<<"180";
return 0;
}
Topfilp(data,n);
DuiCheng(data,n);
if(Check(data,a,n)){
cout<<"270";
return 0;
}
cout<<"-1";
}
海康威视公司氛围 1020人发布