1 solutions
-
0
#include<bits/stdc++.h> using namespace std; const int N=20; int a[N][N],b[N][N]; int main() { int n,m,n1,m1; cin>>n>>m; for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { cin>>a[i][j]; } } cin>>n1>>m1; for(int i=1;i<=n1;i++) { for(int j=1;j<=m1;j++) { cin>>b[i][j]; } } for(int i=0;i<(1<<n);i++) //二进制枚举行 { for(int j=0;j<(1<<m);j++) //二进制枚举列 { vector<int> h,w; for(int k=0;k<n;k++) if(i>>k&1) h.push_back(k+1); for(int k=0;k<m;k++) if(j>>k&1) w.push_back(k+1); if(h.size()!=n1||w.size()!=m1) continue; //大小不同 bool match=true; for(int k=1;k<=n1;k++) { for(int l=1;l<=m1;l++) { if(a[h[k-1]][w[l-1]]!=b[k][l]) { match=false; break; } } } if(match) //找到了一组合法解 { cout<<"Yes"<<endl; return 0; } } } cout<<"No"<<endl; return 0; }
- 1
Information
- ID
- 2632
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 3
- Tags
- # Submissions
- 5
- Accepted
- 3
- Uploaded By