链接:点击打开链接
题意:给出两个N*N的矩阵,将其中一个矩阵分别旋转0°,90°,180°,270°,与另一个矩阵进行比较,判断旋转为多少度时,两个矩阵中相等元素的个数最多,输出最多相等元素的个数
代码:
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
int main(){
int a[50][50],b[50][50],sum;
int i,j,n,maxx;
while(scanf("%d",&n)!=EOF&&n){
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
scanf("%d",&a[i][j]);
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
scanf("%d",&b[i][j]);
sum=maxx=0; //算出旋转后的坐标并分别判断
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(a[i][j]==b[i][j])
sum++;
maxx=max(maxx,sum);
sum=0;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(a[i][j]==b[j][n-i+1])
sum++;
maxx=max(maxx,sum);
sum=0;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(a[i][j]==b[n-i+1][n-j+1])
sum++;
maxx=max(maxx,sum);
sum=0;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(a[i][j]==b[n-j+1][i])
sum++;
maxx=max(maxx,sum);
printf("%d\n",maxx);
}
return 0;
}