显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int n,m;
char a[40][40],b[40][40],ans[40][40],tmp[40][40];
void rotate(){
for(int i=1;i<=m;i++){
for(int j=1;j<=m;j++){
tmp[j][m-i+1]=b[i][j];
}
}
for(int i=1;i<=m;i++){
for(int j=1;j<=m;j++){
b[i][j]=tmp[i][j];
}
}
}
void cover(int x,int y){
for(int i=1;i<=m;i++){
for(int j=1;j<=m;j++){
if(a[x+i-1][y+j-1]=='.'&&b[i][j]=='*'){
return;
}
}
}
for(int i=1;i<=m;i++){
for(int j=1;j<=m;j++){
if(b[i][j]=='*'){
ans[x+i-1][y+j-1]='*';
}
}
}
}
int main(){
freopen("yinzhang.in","r",stdin);
freopen("yinzhang.out","w",stdout);
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int t;
cin>>t;
bool flag;
for(int z=1;z<=t;z++){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i]+1;
}
cin>>m;
for(int i=1;i<=m;i++){
cin>>b[i]+1;
}
memset(ans,'.',sizeof(ans));
for(int i=0;i<4;i++){
rotate();
for(int i=1;i<=n-m+1;i++){
for(int j=1;j<=n-m+1;j++){
cover(i,j);
}
}
}
flag=true;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(a[i][j]!=ans[i][j]){
flag=false;
break;
}
}
}
if(flag==true){
cout<<"YES"<<endl;
}
else{
cout<<"NO"<<endl;
}
}
return 0;
}