天天看点

UVALive - 6456 Zhuge Liang's Password

题意:求两个矩阵,通过旋转能达到的最大重合元素个数

模拟一下旋转就行了

#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;
    }
}