题目链接:点击打开链接
题意:输入两个n*n的矩阵,问这两个矩阵旋转90,180,270度重合的最大数字是多少。
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <ctime>
#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
#include <deque>
#include <list>
#include <set>
#include <map>
#include <iomanip>
using namespace std;
int a[35][35];
int b[35][35];
int n;
int solve()
{
int x=0,y=0,c=0,d=0;
for(int i=1,jj=n,iii=n,jjjj=1; i<=n; i++,jj--,iii--,jjjj++)
{
for(int j=1,ii=1,jjj=n,iiii=n; j<=n; j++,ii++,jjj--,iiii--)
{
if(a[i][j]==b[i][j])
x++;
if(a[i][j]==b[ii][jj])
y++;
if(a[i][j]==b[iii][jjj])
c++;
if(a[i][j]==b[iiii][jjjj])
d++;
}
}
return max(max(x,y),max(c,d));
}
int main()
{
while(~scanf("%d",&n))
{
if(n==0)
break;
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 sum=solve();
printf("%d\n",sum);
}
return 0;
}