题目大意
将A矩阵(或者A矩阵的子矩阵)转置为B矩阵,可以得话输出 YES 不可以的话输出 NO
解题思路
转置之后除对角线外的元素不变,用map存一下,再比较就行了
代码入下
#include<iostream>
#include<map>
#include<cstring>
#include<cmath>
const int maxn=510;
using namespace std;
int a[maxn][maxn],b[maxn][maxn];
map<int,int>mp[maxn*2];
int main()
{
int n,m,i,j,flag=1;
cin>>n>>m;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
cin>>a[i][j];
mp[i+j][a[i][j]]++;
}
}
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
cin>>b[i][j];
if(mp[i+j][b[i][j]]<=0)
{
flag=0;
break;
}
mp[i+j][b[i][j]]--;
}
}
if(flag)
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
return 0;
}