1 条题解
-
1
#include<bits/stdc++.h> #include <system_error> using namespace std; int n; char S[25][25],S1[25][25],A[25][25],B[25][25];//A为原图,B为目标图,S为翻转后的图 void Re(){//重置S图为原图A for(int i=0;i<n;i++) for(int j=0;j<n;j++)S[i][j]=A[i][j]; } bool check(){//判断S图和B图是否相等 for(int i=0;i<n;i++) for(int j=0;j<n;j++)if(S[i][j]!=B[i][j])return 0; return 1; } void C_1(){//顺时针旋转90° for(int i=0;i<n;i++) for(int j=0;j<n;j++)S1[j][n-i-1]=S[i][j]; for(int i=0;i<n;i++) for(int j=0;j<n;j++)S[i][j]=S1[i][j]; } void C_2(){//水平翻转 for(int i=0;i<n;i++) for(int j=0;j<n;j++)S1[i][n-j-1]=S[i][j]; for(int i=0;i<n;i++) for(int j=0;j<n;j++)S[i][j]=S1[i][j]; } int main(){ cin>>n; for(int i=0;i<n;i++)cin>>A[i]; for(int i=0;i<n;i++)cin>>B[i]; Re(); C_1();//重置后进行1操作 if(check()){ cout<<1; return 0; } Re(); C_1(); C_1();//重置后进行2操作 if(check()){ cout<<2; return 0; } Re(); C_1(); C_1(); C_1();//重置后进行3操作 if(check()){ cout<<3; return 0; } Re(); C_2();//重置后进行4操作 if(check()){ cout<<4; return 0; } Re(); C_2(); C_1();//重置后进行4+1操作 if(check()){ cout<<5; return 0; } Re(); C_2(); C_1(); C_1();//重置后进行4+2操作 if(check()){ cout<<5; return 0; } Re(); C_2(); C_1(); C_1(); C_1();//重置后进行4+3操作 if(check()){ cout<<5; return 0; } Re();//重置后不进行操作 if(check()){ cout<<6; } cout<<7; return 0; }
- 1
信息
- ID
- 686
- 时间
- 1000ms
- 内存
- 125MiB
- 难度
- 9
- 标签
- 递交数
- 39
- 已通过
- 3
- 上传者