题意:求两个矩阵,通过旋转能达到的最大重合元素个数
模拟一下旋转就行了
#include <iostream>
#include<bits/stdc++.h>
using namespace std;
int a[110][110],b[110][110],n;
int main()
{
while(~scanf("%d",&n)&&n)
{
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
scanf("%d",&a[i][j]);
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
scanf("%d",&b[i][j]);
int ans=0;
int sum=0;
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
if(a[i][j]==b[i][j]) sum++;
ans=sum;
sum=0;
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
if(a[i][j]==b[j][n-1-i]) sum++;
ans=max(ans,sum);
sum=0;
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
if(a[i][j]==b[n-1-i][n-1-j]) sum++;
ans=max(ans,sum);
sum=0;
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
if(a[i][j]==b[n-1-j][i]) sum++;
ans=max(ans,sum);
cout<<ans<<endl;
}
}