题目大意:给出n及2个n*n的数组,求对其中一个数组进行旋转0度,90度,180度,或者270度,2个数组同位置的相同元素最多有多少个
解题思路:纯模拟,比较求最大
#include <bits/stdc++.h>
using namespace std;
const int N = 35;
int a[N][N],b[N][N];
int main()
{
int n,m;
while(scanf("%d",&n)&&n)
{
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
scanf("%d",&a[i][j]);
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
scanf("%d",&b[i][j]);
int maxx = 0;
int sum0 = 0, sum1 = 0,sum2 = 0,sum3 = 0;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(b[i][j]==a[i][j])
sum0++;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(b[j][n-i+1]==a[i][j])
sum1++;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(b[n-i+1][n-j+1]==a[i][j])
sum2++;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(b[n-j+1][i]==a[i][j])
sum3++;
printf("%d\n",maxx=max(max(sum0,sum1),max(sum2,sum3)));
}
return 0;
}