水题,翻转的时候画几个图找一找下表变化的规律就可以了。渣渣还卡在1002的MLE中。>_<
#include<stdio.h> #include <cstdio> #include<string> #include<math.h> #include<stdlib.h> #include<set> #include<map> #include<vector> #include<queue> #include<string.h> #include<algorithm> #include<iostream> using namespace std; int a1[33][33]; int a2[33][33]; int N=0; //int ans[4][33]; int mx=0; int cnt[4]; void get() { for(int i=0;i<N;i++) { for(int j=0;j<N;j++) { if(a1[i][j]==a2[i][j]) { // ans[0][cnt[0]++]=a1[i][j]; cnt[0]++; } if(a1[i][j]==a2[N-1-j][i]) { // ans[1][cnt[1]++]=a1[i][j]; cnt[1]++; } if(a1[i][j]==a2[N-1-i][N-1-j]) { //ans[2][cnt[2++]]=a1[i][j]; cnt[2]++; } if(a1[i][j]==a2[j][N-1-i]) { // ans[3][cnt[3]++]=a1[i][j]; cnt[3]++; } } } int id=0; for(int i=0;i<4;i++) { if(cnt[i]>mx) { mx=cnt[i]; id=i; } } printf("%d\n",cnt[id]); } int main() { // freopen("input.txt","r",stdin); while(scanf("%d",&N)) { if(N==0) break; mx=0; for(int i=0;i<4;i++) cnt[i]=0; for(int i=0;i<N;i++) for(int j=0;j<N;j++) { scanf("%d",&a1[i][j]); } for(int i=0;i<N;i++) for(int j=0;j<N;j++) { scanf("%d",&a2[i][j]); } get(); } return 0; }